[][src]Struct roaring::bitmap::RoaringBitmap

pub struct RoaringBitmap { /* 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[src]

pub fn new() -> RoaringBitmap[src]

Creates an empty RoaringBitmap.

Examples

use roaring::RoaringBitmap;
let mut rb = RoaringBitmap::new();

pub fn insert(&mut self, value: u32) -> bool[src]

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);

pub fn remove(&mut self, value: u32) -> bool[src]

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);

pub fn remove_range(&mut self, range: Range<u64>) -> u64[src]

Removes a range of values from the set specific as [start..end). Returns the number of removed values.

Note that due to the exclusive end this functions take indexes as u64 but you still can't index past 2**32 (u32::MAX + 1).

Examples

use roaring::RoaringBitmap;

let mut rb = RoaringBitmap::new();
rb.insert(2);
rb.insert(3);
assert_eq!(rb.remove_range(2..4), 2);

pub fn contains(&self, value: u32) -> bool[src]

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);

pub fn clear(&mut self)[src]

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);

pub fn is_empty(&self) -> bool[src]

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);

pub fn len(&self) -> u64[src]

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);

pub fn min(&self) -> Option<u32>[src]

Returns the minimum value in the set (if the set is non-empty).

Examples

use roaring::RoaringBitmap;

let mut rb = RoaringBitmap::new();
assert_eq!(rb.min(), None);

rb.insert(3);
rb.insert(4);
assert_eq!(rb.min(), Some(3));

pub fn max(&self) -> Option<u32>[src]

Returns the maximum value in the set (if the set is non-empty).

Examples

use roaring::RoaringBitmap;

let mut rb = RoaringBitmap::new();
assert_eq!(rb.max(), None);

rb.insert(3);
rb.insert(4);
assert_eq!(rb.max(), Some(4));

impl RoaringBitmap[src]

Important traits for Iter<'a>
pub fn iter(&self) -> Iter[src]

Iterator over each value stored in the RoaringBitmap, guarantees values are ordered by value.

Examples

use roaring::RoaringBitmap;
use std::iter::FromIterator;

let bitmap = RoaringBitmap::from_iter(1..3);
let mut iter = bitmap.iter();

assert_eq!(iter.next(), Some(1));
assert_eq!(iter.next(), Some(2));
assert_eq!(iter.next(), None);

impl RoaringBitmap[src]

pub fn union_with(&mut self, other: &RoaringBitmap)[src]

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);

Can also be done via the BitOr operator.

use roaring::RoaringBitmap;

let mut rb1: RoaringBitmap = (1..4).collect();
let rb2: RoaringBitmap = (3..5).collect();
let rb3: RoaringBitmap = (1..5).collect();

let rb1 = rb1 | rb2;

assert_eq!(rb1, rb3);

pub fn intersect_with(&mut self, other: &RoaringBitmap)[src]

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);

Can also be done via the BitAnd operator.

use roaring::RoaringBitmap;

let mut rb1: RoaringBitmap = (1..4).collect();
let rb2: RoaringBitmap = (3..5).collect();
let rb3: RoaringBitmap = (3..4).collect();

let rb1 = rb1 & rb2;

assert_eq!(rb1, rb3);

pub fn difference_with(&mut self, other: &RoaringBitmap)[src]

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);

Can also be done via the Sub operator.

use roaring::RoaringBitmap;

let mut rb1: RoaringBitmap = (1..4).collect();
let rb2: RoaringBitmap = (3..5).collect();
let rb3: RoaringBitmap = (1..3).collect();

let rb1 = rb1 - rb2;

assert_eq!(rb1, rb3);

pub fn symmetric_difference_with(&mut self, other: &RoaringBitmap)[src]

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);

Can also be done via the BitXor operator.

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();

let rb1 = rb1 ^ rb2;

assert_eq!(rb1, rb3);

impl RoaringBitmap[src]

pub fn is_disjoint(&self, other: &Self) -> bool[src]

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);

pub fn is_subset(&self, other: &Self) -> bool[src]

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);

pub fn is_superset(&self, other: &Self) -> bool[src]

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);

impl RoaringBitmap[src]

pub fn serialized_size(&self) -> usize[src]

Return the size in bytes of the serialized output. This is compatible with the official C/C++, Java and Go implementations.

Examples

use roaring::RoaringBitmap;

let rb1: RoaringBitmap = (1..4).collect();
let mut bytes = Vec::with_capacity(rb1.serialized_size());
rb1.serialize_into(&mut bytes).unwrap();
let rb2 = RoaringBitmap::deserialize_from(&mut &bytes[..]).unwrap();

assert_eq!(rb1, rb2);

pub fn serialize_into<W: Write>(&self, writer: W) -> Result<()>[src]

Serialize this bitmap into the standard Roaring on-disk format. This is compatible with the official C/C++, Java and Go implementations.

Examples

use roaring::RoaringBitmap;

let rb1: RoaringBitmap = (1..4).collect();
let mut bytes = vec![];
rb1.serialize_into(&mut bytes).unwrap();
let rb2 = RoaringBitmap::deserialize_from(&mut &bytes[..]).unwrap();

assert_eq!(rb1, rb2);

pub fn deserialize_from<R: Read>(reader: R) -> Result<RoaringBitmap>[src]

Deserialize a bitmap into memory from the standard Roaring on-disk format. This is compatible with the official C/C++, Java and Go implementations.

Examples

use roaring::RoaringBitmap;

let rb1: RoaringBitmap = (1..4).collect();
let mut bytes = vec![];
rb1.serialize_into(&mut bytes).unwrap();
let rb2 = RoaringBitmap::deserialize_from(&mut &bytes[..]).unwrap();

assert_eq!(rb1, rb2);

Trait Implementations

impl Clone for RoaringBitmap[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Default for RoaringBitmap[src]

impl PartialEq<RoaringBitmap> for RoaringBitmap[src]

impl Extend<u32> for RoaringBitmap[src]

impl<'a> IntoIterator for &'a RoaringBitmap[src]

type Item = u32

The type of the elements being iterated over.

type IntoIter = Iter<'a>

Which kind of iterator are we turning this into?

impl IntoIterator for RoaringBitmap[src]

type Item = u32

The type of the elements being iterated over.

type IntoIter = IntoIter

Which kind of iterator are we turning this into?

impl Debug for RoaringBitmap[src]

impl Sub<RoaringBitmap> for RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the - operator.

impl<'a> Sub<&'a RoaringBitmap> for RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the - operator.

impl<'a> Sub<RoaringBitmap> for &'a RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the - operator.

impl<'a, 'b> Sub<&'a RoaringBitmap> for &'b RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the - operator.

impl SubAssign<RoaringBitmap> for RoaringBitmap[src]

impl<'a> SubAssign<&'a RoaringBitmap> for RoaringBitmap[src]

impl BitAnd<RoaringBitmap> for RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the & operator.

impl<'a> BitAnd<&'a RoaringBitmap> for RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the & operator.

impl<'a> BitAnd<RoaringBitmap> for &'a RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the & operator.

impl<'a, 'b> BitAnd<&'a RoaringBitmap> for &'b RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the & operator.

impl BitOr<RoaringBitmap> for RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the | operator.

impl<'a> BitOr<&'a RoaringBitmap> for RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the | operator.

impl<'a> BitOr<RoaringBitmap> for &'a RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the | operator.

impl<'a, 'b> BitOr<&'a RoaringBitmap> for &'b RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the | operator.

impl BitXor<RoaringBitmap> for RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the ^ operator.

impl<'a> BitXor<&'a RoaringBitmap> for RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the ^ operator.

impl<'a> BitXor<RoaringBitmap> for &'a RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the ^ operator.

impl<'a, 'b> BitXor<&'a RoaringBitmap> for &'b RoaringBitmap[src]

type Output = RoaringBitmap

The resulting type after applying the ^ operator.

impl BitAndAssign<RoaringBitmap> for RoaringBitmap[src]

impl<'a> BitAndAssign<&'a RoaringBitmap> for RoaringBitmap[src]

impl BitOrAssign<RoaringBitmap> for RoaringBitmap[src]

impl<'a> BitOrAssign<&'a RoaringBitmap> for RoaringBitmap[src]

impl BitXorAssign<RoaringBitmap> for RoaringBitmap[src]

impl<'a> BitXorAssign<&'a RoaringBitmap> for RoaringBitmap[src]

impl FromIterator<u32> for RoaringBitmap[src]

Auto Trait Implementations

Blanket Implementations

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]