Crate id_set [] [src]

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 Definitions

Block

The block type of the underlying representation.

Id

The element type of the set.