Expand description
IdSet
is a bitset implementation that stores data on the stack for small sizes (elements
less than 196) and keeps track of the element count.
§Examples
The API is generally similar to that of the bit-set crate.
let mut set = IdSet::new();
set.insert(42);
assert!(set.contains(42));
set.remove(42);
assert_eq!(set.len(), 0);
Additionally the IdIter
struct provides iteration over the bits of any iterator over Block
values, allowing iteration over unions, intersections, and differences of arbitrarily many sets.
let a: IdSet = (0..15).collect();
let b: IdSet = (10..20).collect();
let c: IdSet = (0..5).collect();
assert_eq!(a.intersection(b.union(&c)).collect::<Vec<_>>(),
a.intersection(&b).union(a.intersection(&c)).collect::<Vec<_>>());
Structs§
- Block
Iter - Represents a view into the blocks of a set or combination of sets. An iterator over the elements
can be obtained with
into_iter()
. - Blocks
- An iterator over the blocks of the underlying representation.
- Difference
- Takes the difference of two block iterators.
- IdIter
- Transforms an iterator over blocks into an iterator over elements.
- IdSet
- A set of
usize
elements represented by a bit vector. Storage required is proportional to the maximum element in the set. - Intersection
- Takes the intersection of two block iterators.
- Into
Blocks - A consuming iterator over the blocks of the underlying representation.
- Into
Iter - A consuming iterator over all elements in increasing order.
- Iter
- An iterator over all elements in increasing order.
- Symmetric
Difference - Takes the symmetric difference of two block iterators.
- Union
- Takes the union of two block iterators.
Constants§
- BITS
- The number of bits in the block type.
Traits§
- Into
Block Iterator - Conversion into an iterator over blocks.