// option. This file may not be copied, modified, or distributed
// except according to those terms.
-use std::collections::EnumSet;
+use std::mem;
+
+use collections::enum_set::{CLike, EnumSet};
+
+use self::Foo::*;
#[derive(Copy, PartialEq, Debug)]
#[repr(usize)]
fn test_iterator() {
let mut e1: EnumSet<Foo> = EnumSet::new();
- let elems: ::vec::Vec<Foo> = e1.iter().collect();
+ let elems: Vec<Foo> = e1.iter().collect();
assert!(elems.is_empty());
e1.insert(A);
- let elems: ::vec::Vec<_> = e1.iter().collect();
+ let elems: Vec<_> = e1.iter().collect();
assert_eq!([A], elems);
e1.insert(C);
- let elems: ::vec::Vec<_> = e1.iter().collect();
+ let elems: Vec<_> = e1.iter().collect();
assert_eq!([A,C], elems);
e1.insert(C);
- let elems: ::vec::Vec<_> = e1.iter().collect();
+ let elems: Vec<_> = e1.iter().collect();
assert_eq!([A,C], elems);
e1.insert(B);
- let elems: ::vec::Vec<_> = e1.iter().collect();
+ let elems: Vec<_> = e1.iter().collect();
assert_eq!([A,B,C], elems);
}
e2.insert(C);
let e_union = e1 | e2;
- let elems: ::vec::Vec<_> = e_union.iter().collect();
+ let elems: Vec<_> = e_union.iter().collect();
assert_eq!([A,B,C], elems);
let e_intersection = e1 & e2;
- let elems: ::vec::Vec<_> = e_intersection.iter().collect();
+ let elems: Vec<_> = e_intersection.iter().collect();
assert_eq!([C], elems);
// Another way to express intersection
let e_intersection = e1 - (e1 - e2);
- let elems: ::vec::Vec<_> = e_intersection.iter().collect();
+ let elems: Vec<_> = e_intersection.iter().collect();
assert_eq!([C], elems);
let e_subtract = e1 - e2;
- let elems: ::vec::Vec<_> = e_subtract.iter().collect();
+ let elems: Vec<_> = e_subtract.iter().collect();
assert_eq!([A], elems);
// Bitwise XOR of two sets, aka symmetric difference
let e_symmetric_diff = e1 ^ e2;
- let elems: ::vec::Vec<_> = e_symmetric_diff.iter().collect();
+ let elems: Vec<_> = e_symmetric_diff.iter().collect();
assert_eq!([A,B], elems);
// Another way to express symmetric difference
let e_symmetric_diff = (e1 - e2) | (e2 - e1);
- let elems: ::vec::Vec<_> = e_symmetric_diff.iter().collect();
+ let elems: Vec<_> = e_symmetric_diff.iter().collect();
assert_eq!([A,B], elems);
// Yet another way to express symmetric difference
let e_symmetric_diff = (e1 | e2) - (e1 & e2);
- let elems: ::vec::Vec<_> = e_symmetric_diff.iter().collect();
+ let elems: Vec<_> = e_symmetric_diff.iter().collect();
assert_eq!([A,B], elems);
}