enum MyEnum { MyEnumA = 1, MyEnumB = 2, MyEnumEmpty; } impl enum_set::CLike for MyEnum { fn to_uint(&self) -> uint { *self as uint } fn from_uint(u : uint) -> MyEnum { if (u == (MyEnumA as uint)) { MyEnumA } else if (u == (MyEnumB as uint)) { MyEnumB } else { MyEnumEmpty } } } type MyEnumSet = enum_set::EnumSet; fn main () { let (port, chan) = Chan::new(); let (num_port, num_chan) = SharedChan::new(); let bar : uint = 0xdeadbeef; let mut foo : MyEnumSet = enum_set::EnumSet::empty(); for i in range(0,8 * 4) { let bit = bar & (1 << i); if (bit != 0) { let e : MyEnum = enum_set::CLike::from_uint(bit); foo.add(e); } } }