trait BitSet { fn clear(&mut self, index: usize); fn is_set(&self, index: usize) -> bool; fn set(&mut self, index: usize); fn toggle(&mut self, index: usize) { if self.is_set(index) { self.clear(index); } else { self.set(index); } } } impl BitSet for u64 { fn clear(&mut self, index: usize) { *self &= !(1 << index); } fn is_set(&self, index: usize) -> bool { (*self >> index) & 1 == 1 } fn set(&mut self, index: usize) { *self |= 1 << index; } fn toggle(&mut self, index: usize) { *self ^= 1 << index } } ……
阅读全文