diff --git a/src/libcollections/bitv.rs b/src/libcollections/bitv.rs index 424eb54d8da36..871584b669e75 100644 --- a/src/libcollections/bitv.rs +++ b/src/libcollections/bitv.rs @@ -225,6 +225,32 @@ enum BitvVariant { Big(BigBitv), Small(SmallBitv) } enum Op {Union, Intersect, Assign, Difference} /// The bitvector type +/// +/// # Example +/// +/// ```rust +/// use collections::bitv::Bitv; +/// +/// let mut bv = Bitv::new(10, false); +/// +/// // insert all primes less than 10 +/// bv.set(2, true); +/// bv.set(3, true); +/// bv.set(5, true); +/// bv.set(7, true); +/// println!("{}", bv.to_str()); +/// println!("total bits set to true: {}", bv.iter().count(|x| x)); +/// +/// // flip all values in bitvector, producing non-primes less than 10 +/// bv.negate(); +/// println!("{}", bv.to_str()); +/// println!("total bits set to true: {}", bv.iter().count(|x| x)); +/// +/// // reset bitvector to empty +/// bv.clear(); +/// println!("{}", bv.to_str()); +/// println!("total bits set to true: {}", bv.iter().count(|x| x)); +/// ``` #[deriving(Clone)] pub struct Bitv { /// Internal representation of the bit vector (small or large) @@ -264,10 +290,11 @@ impl Bitv { } } } - } impl Bitv { + /// Creates an empty Bitv that holds `nbits` elements, setting each element + /// to `init`. pub fn new(nbits: uint, init: bool) -> Bitv { let rep = if nbits < uint::BITS { Small(SmallBitv::new(if init {(1<(&'a self) -> Bits<'a> { Bits {bitv: self, next_idx: 0, end_idx: self.nbits}