Crate id_set

Source
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§

BlockIter
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.
IntoBlocks
A consuming iterator over the blocks of the underlying representation.
IntoIter
A consuming iterator over all elements in increasing order.
Iter
An iterator over all elements in increasing order.
SymmetricDifference
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§

IntoBlockIterator
Conversion into an iterator over blocks.

Type Aliases§

Block
The block type of the underlying representation.
Id
The element type of the set.