Struct roaring::RoaringBitmap
[-]
[+]
[src]
pub struct RoaringBitmap { // some fields omitted }
A compressed bitmap using the Roaring bitmap compression scheme.
Examples
use roaring::RoaringBitmap; let mut rb = RoaringBitmap::new(); // insert all primes less than 10 rb.insert(2); rb.insert(3); rb.insert(5); rb.insert(7); println!("total bits set to true: {}", rb.len());
Methods
impl RoaringBitmap
fn new() -> RoaringBitmap
Creates an empty RoaringBitmap
.
Examples
use roaring::RoaringBitmap; let mut rb = RoaringBitmap::new();
fn insert(&mut self, value: u32) -> bool
Adds a value to the set. Returns true
if the value was not already present in the set.
Examples
use roaring::RoaringBitmap; let mut rb = RoaringBitmap::new(); assert_eq!(rb.insert(3), true); assert_eq!(rb.insert(3), false); assert_eq!(rb.contains(3), true);
fn remove(&mut self, value: u32) -> bool
Removes a value from the set. Returns true
if the value was present in the set.
Examples
use roaring::RoaringBitmap; let mut rb = RoaringBitmap::new(); rb.insert(3); assert_eq!(rb.remove(3), true); assert_eq!(rb.remove(3), false); assert_eq!(rb.contains(3), false);
fn contains(&self, value: u32) -> bool
Returns true
if this set contains the specified integer.
Examples
use roaring::RoaringBitmap; let mut rb = RoaringBitmap::new(); rb.insert(1); assert_eq!(rb.contains(0), false); assert_eq!(rb.contains(1), true); assert_eq!(rb.contains(100), false);
fn clear(&mut self)
Clears all integers in this set.
Examples
use roaring::RoaringBitmap; let mut rb = RoaringBitmap::new(); rb.insert(1); assert_eq!(rb.contains(1), true); rb.clear(); assert_eq!(rb.contains(1), false);
fn is_empty(&self) -> bool
Returns true
if there are no integers in this set.
Examples
use roaring::RoaringBitmap; let mut rb = RoaringBitmap::new(); assert_eq!(rb.is_empty(), true); rb.insert(3); assert_eq!(rb.is_empty(), false);
fn len(&self) -> uint
Returns the number of distinct integers added to the set.
Examples
use roaring::RoaringBitmap; let mut rb = RoaringBitmap::new(); assert_eq!(rb.len(), 0); rb.insert(3); assert_eq!(rb.len(), 1); rb.insert(3); rb.insert(4); assert_eq!(rb.len(), 2);
fn iter<'a>(&'a self) -> Iter<'a>
Iterator over each u32 stored in the RoaringBitmap, guarantees values are ordered by value.
Examples
use roaring::RoaringBitmap; let mut rb = RoaringBitmap::new(); rb.insert(1); rb.insert(6); rb.insert(4); let mut iter = rb.iter(); assert_eq!(iter.next(), Some(1)); assert_eq!(iter.next(), Some(4)); assert_eq!(iter.next(), Some(6)); assert_eq!(iter.next(), None);
fn is_disjoint(&self, other: &RoaringBitmap) -> bool
Returns true if the set has no elements in common with other. This is equivalent to checking for an empty intersection.
Examples
use roaring::RoaringBitmap; let mut rb1 = RoaringBitmap::new(); let mut rb2 = RoaringBitmap::new(); rb1.insert(1); assert_eq!(rb1.is_disjoint(&rb2), true); rb2.insert(1); assert_eq!(rb1.is_disjoint(&rb2), false);
fn is_subset(&self, other: &RoaringBitmap) -> bool
Returns true
if this set is a subset of other
.
Examples
use roaring::RoaringBitmap; let mut rb1 = RoaringBitmap::new(); let mut rb2 = RoaringBitmap::new(); rb1.insert(1); assert_eq!(rb1.is_subset(&rb2), false); rb2.insert(1); assert_eq!(rb1.is_subset(&rb2), true); rb1.insert(2); assert_eq!(rb1.is_subset(&rb2), false);
fn is_superset(&self, other: &RoaringBitmap) -> bool
Returns true
if this set is a superset of other
.
Examples
use roaring::RoaringBitmap; let mut rb1 = RoaringBitmap::new(); let mut rb2 = RoaringBitmap::new(); rb1.insert(1); assert_eq!(rb2.is_superset(&rb1), false); rb2.insert(1); assert_eq!(rb2.is_superset(&rb1), true); rb1.insert(2); assert_eq!(rb2.is_superset(&rb1), false);
fn union<'a>(&'a self, other: &'a RoaringBitmap) -> UnionIter<'a>
Returns an iterator over the union of this bitmap with the other
bitmap.
Examples
use roaring::RoaringBitmap; let mut rb1 = RoaringBitmap::new(); let mut rb2 = RoaringBitmap::new(); rb1.insert(1); rb1.insert(2); rb2.insert(1); rb2.insert(3); let mut iter = rb1.union(&rb2); assert_eq!(iter.next(), Some(1)); assert_eq!(iter.next(), Some(2)); assert_eq!(iter.next(), Some(3)); assert_eq!(iter.next(), None);
fn intersection<'a>(&'a self, other: &'a RoaringBitmap) -> IntersectionIter<'a>
Returns an iterator over the intersection of this bitmap with the other
bitmap.
Examples
use roaring::RoaringBitmap; let mut rb1 = RoaringBitmap::new(); let mut rb2 = RoaringBitmap::new(); rb1.insert(1); rb1.insert(2); rb1.insert(4); rb2.insert(1); rb2.insert(3); rb2.insert(4); let mut iter = rb1.intersection(&rb2); assert_eq!(iter.next(), Some(1)); assert_eq!(iter.next(), Some(4)); assert_eq!(iter.next(), None);
fn difference<'a>(&'a self, other: &'a RoaringBitmap) -> DifferenceIter<'a>
Returns an iterator over the set of u32
s in this
that are not in other
.
Examples
use roaring::RoaringBitmap; let mut rb1 = RoaringBitmap::new(); let mut rb2 = RoaringBitmap::new(); rb1.insert(1); rb1.insert(2); rb1.insert(4); rb2.insert(1); rb2.insert(3); rb2.insert(4); let mut iter1 = rb1.difference(&rb2); assert_eq!(iter1.next(), Some(2)); assert_eq!(iter1.next(), None); let mut iter2 = rb2.difference(&rb1); assert_eq!(iter2.next(), Some(3)); assert_eq!(iter2.next(), None);
fn symmetric_difference<'a>(&'a self, other: &'a RoaringBitmap) -> SymmetricDifferenceIter<'a>
Returns an iterator over the set of u32
s in this
that are not in other
+ in other
that are not in this
.
Examples
use roaring::RoaringBitmap; let mut rb1 = RoaringBitmap::new(); let mut rb2 = RoaringBitmap::new(); rb1.insert(1); rb1.insert(2); rb1.insert(4); rb2.insert(1); rb2.insert(3); rb2.insert(4); let mut iter = rb1.symmetric_difference(&rb2); assert_eq!(iter.next(), Some(2)); assert_eq!(iter.next(), Some(3)); assert_eq!(iter.next(), None);
fn union_with(&mut self, other: &RoaringBitmap)
Unions in-place with the specified other bitmap.
Examples
use roaring::RoaringBitmap; let mut rb1: RoaringBitmap = (1..4).collect(); let rb2: RoaringBitmap = (3..5).collect(); let rb3: RoaringBitmap = (1..5).collect(); rb1.union_with(&rb2); assert_eq!(rb1, rb3);
fn intersect_with(&mut self, other: &RoaringBitmap)
Intersects in-place with the specified other bitmap.
Examples
use roaring::RoaringBitmap; let mut rb1: RoaringBitmap = (1..4).collect(); let rb2: RoaringBitmap = (3..5).collect(); let rb3: RoaringBitmap = (3..4).collect(); rb1.intersect_with(&rb2); assert_eq!(rb1, rb3);
fn difference_with(&mut self, other: &RoaringBitmap)
Removes all values in the specified other bitmap from self, in-place.
Examples
use roaring::RoaringBitmap; let mut rb1: RoaringBitmap = (1..4).collect(); let rb2: RoaringBitmap = (3..5).collect(); let rb3: RoaringBitmap = (1..3).collect(); rb1.difference_with(&rb2); assert_eq!(rb1, rb3);
fn symmetric_difference_with(&mut self, other: &RoaringBitmap)
Replaces this bitmap with one that is equivalent to self XOR other
.
Examples
use roaring::RoaringBitmap; let mut rb1: RoaringBitmap = (1..4).collect(); let rb2: RoaringBitmap = (3..6).collect(); let rb3: RoaringBitmap = ((1..3).chain(4..6)).collect(); rb1.symmetric_difference_with(&rb2); assert_eq!(rb1, rb3);
Trait Implementations
impl FromIterator<u32> for RoaringBitmap
fn from_iter<I: Iterator>(iterator: I) -> RoaringBitmap
impl<'a> FromIterator<&'a u32> for RoaringBitmap
fn from_iter<I: Iterator>(iterator: I) -> RoaringBitmap
impl Extend<u32> for RoaringBitmap
impl<'a> Extend<&'a u32> for RoaringBitmap
impl BitOr<RoaringBitmap> for RoaringBitmap
type Output = RoaringBitmap
fn bitor(self, rhs: RoaringBitmap) -> RoaringBitmap
Unions the rhs
into this RoaringBitmap
.
Examples
use roaring::RoaringBitmap; let rb1: RoaringBitmap = (1..4).collect(); let rb2: RoaringBitmap = (2..5).collect(); let rb3: RoaringBitmap = (1..5).collect(); let rb4 = rb1 | rb2; assert_eq!(rb3, rb4);
impl<'a> BitOr<&'a RoaringBitmap> for RoaringBitmap
type Output = RoaringBitmap
fn bitor(self, rhs: &'a RoaringBitmap) -> RoaringBitmap
Unions the rhs
into this RoaringBitmap
.
Examples
use roaring::RoaringBitmap; let rb1: RoaringBitmap = (1..4).collect(); let rb2: RoaringBitmap = (2..5).collect(); let rb3: RoaringBitmap = (1..5).collect(); let rb4 = rb1 | &rb2; assert_eq!(rb3, rb4);
impl BitAnd<RoaringBitmap> for RoaringBitmap
type Output = RoaringBitmap
fn bitand(self, rhs: RoaringBitmap) -> RoaringBitmap
Intersects the rhs
into this RoaringBitmap
.
Examples
use roaring::RoaringBitmap; let rb1: RoaringBitmap = (1..4).collect(); let rb2: RoaringBitmap = (2..5).collect(); let rb3: RoaringBitmap = (2..4).collect(); let rb4 = rb1 & rb2; assert_eq!(rb3, rb4);
impl<'a> BitAnd<&'a RoaringBitmap> for RoaringBitmap
type Output = RoaringBitmap
fn bitand(self, rhs: &'a RoaringBitmap) -> RoaringBitmap
Intersects the rhs
into this RoaringBitmap
.
Examples
use roaring::RoaringBitmap; let rb1: RoaringBitmap = (1..4).collect(); let rb2: RoaringBitmap = (2..5).collect(); let rb3: RoaringBitmap = (2..4).collect(); let rb4 = rb1 & &rb2; assert_eq!(rb3, rb4);
impl Sub<RoaringBitmap> for RoaringBitmap
type Output = RoaringBitmap
fn sub(self, rhs: RoaringBitmap) -> RoaringBitmap
Subtracts the rhs
into this RoaringBitmap
.
Examples
use roaring::RoaringBitmap; let rb1: RoaringBitmap = (1..4).collect(); let rb2: RoaringBitmap = (3..5).collect(); let rb3: RoaringBitmap = (1..3).collect(); let rb4 = rb1 - rb2; assert_eq!(rb3, rb4);
impl<'a> Sub<&'a RoaringBitmap> for RoaringBitmap
type Output = RoaringBitmap
fn sub(self, rhs: &'a RoaringBitmap) -> RoaringBitmap
Subtracts the rhs
into this RoaringBitmap
.
Examples
use roaring::RoaringBitmap; let rb1: RoaringBitmap = (1..4).collect(); let rb2: RoaringBitmap = (3..5).collect(); let rb3: RoaringBitmap = (1..3).collect(); let rb4 = rb1 - &rb2; assert_eq!(rb3, rb4);
impl BitXor<RoaringBitmap> for RoaringBitmap
type Output = RoaringBitmap
fn bitxor(self, rhs: RoaringBitmap) -> RoaringBitmap
Subtracts the rhs
into this RoaringBitmap
.
Examples
use roaring::RoaringBitmap; let rb1: RoaringBitmap = (1..4).collect(); let rb2: RoaringBitmap = (3..6).collect(); let rb3: RoaringBitmap = ((1..3).chain(4..6)).collect(); let rb4 = rb1 ^ rb2; assert_eq!(rb3, rb4);
impl<'a> BitXor<&'a RoaringBitmap> for RoaringBitmap
type Output = RoaringBitmap
fn bitxor(self, rhs: &'a RoaringBitmap) -> RoaringBitmap
Exclusive ors the rhs
into this RoaringBitmap
.
Examples
use roaring::RoaringBitmap; let rb1: RoaringBitmap = (1..4).collect(); let rb2: RoaringBitmap = (3..6).collect(); let rb3: RoaringBitmap = ((1..3).chain(4..6)).collect(); let rb4 = rb1 ^ &rb2; assert_eq!(rb3, rb4);