[][src]Struct croaring::treemap::Treemap

pub struct Treemap {
    pub map: BTreeMap<u32, Bitmap>,
}

Fields

map: BTreeMap<u32, Bitmap>

Methods

impl Treemap[src]

pub fn create() -> Self[src]

Creates an empty Treemap.

Examples

use croaring::Treemap;
let treemap = Treemap::create();

pub fn add(&mut self, value: u64)[src]

Examples

use std::u32;
use croaring::Treemap;

let mut treemap = Treemap::create();
treemap.add(3);
assert!(treemap.contains(3));
treemap.add(u32::MAX as u64);
assert!(treemap.contains(u32::MAX as u64));
treemap.add(u64::from(u32::MAX) + 1);
assert!(treemap.contains(u64::from(u32::MAX)+ 1));

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

use croaring::Treemap;

let mut treemap = Treemap::create();

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

Returns true if the Treemap is empty.

Examples

use std::u64;
use croaring::Treemap;

let mut treemap = Treemap::create();

assert!(treemap.is_empty());

treemap.add(u64::MAX);

assert!(!treemap.is_empty());

pub fn remove(&mut self, element: u64)[src]

Remove element from the Treemap

Examples

use std::u64;
use croaring::Treemap;

let mut treemap = Treemap::create();
treemap.add(u64::MAX);
treemap.remove(u64::MAX);

assert!(treemap.is_empty());

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

Returns the number of elements contained in the Treemap

Examples

use std::u64;
use croaring::Treemap;

let mut treemap = Treemap::create();
treemap.add(1);

assert_eq!(treemap.cardinality(), 1);

treemap.add(u64::MAX);

assert_eq!(treemap.cardinality(), 2);

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

Returns the smallest value in the set. Returns std::u64::MAX if the set is empty.

Examples

use croaring::Treemap;

let mut treemap: Treemap = Treemap::create();
let empty_treemap: Treemap = Treemap::create();

treemap.add(120);
treemap.add(1000);

assert_eq!(treemap.minimum(), 120);
assert_eq!(empty_treemap.minimum(), std::u64::MAX);

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

Returns the greatest value in the set. Returns 0 if the set is empty.

Examples

use croaring::Treemap;

let mut treemap: Treemap = Treemap::create();
let empty_treemap: Treemap = Treemap::create();

treemap.add(120);
treemap.add(1000);

assert_eq!(treemap.maximum(), 1000);
assert_eq!(empty_treemap.maximum(), 0);

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

And computes the intersection between two treemaps and returns the result as a new treemap

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(u64::MAX);

let mut treemap2 = Treemap::create();
treemap2.add(u64::MAX);
treemap2.add(2);

let treemap3 = treemap1.and(&treemap2);

assert!(treemap3.contains(u64::MAX));
assert!(!treemap3.contains(2));

pub fn and_inplace(&mut self, other: &Self)[src]

Computes the intersection between two treemaps and stores the result in the current treemap

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(u64::MAX);

let mut treemap2 = Treemap::create();
treemap2.add(25);

let mut treemap3 = Treemap::create();
treemap3.add(u64::MAX);

let mut treemap4 = Treemap::create();
treemap4.add(u64::MAX);
treemap4.add(25);

treemap1.and_inplace(&treemap2);

assert!(treemap1.cardinality() == 0);
assert!(!treemap1.contains(u64::MAX));
assert!(!treemap1.contains(25));

treemap3.and_inplace(&treemap4);

assert!(treemap3.cardinality() == 1);
assert!(treemap3.contains(u64::MAX));
assert!(!treemap3.contains(25));

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

Or computes the union between two bitmaps and returns the result as a new bitmap

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(u64::MAX);

let mut treemap2 = Treemap::create();
treemap2.add(25);

let treemap3 = treemap1.or(&treemap2);

assert!(treemap3.cardinality() == 2);
assert!(treemap3.contains(u64::MAX));
assert!(treemap3.contains(25));

pub fn or_inplace(&mut self, other: &Self)[src]

Computes the intersection between two bitmaps and stores the result in the current bitmap

Examples

use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(15);

let mut treemap2 = Treemap::create();
treemap2.add(25);

let mut treemap3 = Treemap::create();
treemap3.add(15);

let mut bitmap4 = Treemap::create();
bitmap4.add(15);
bitmap4.add(25);

treemap1.and_inplace(&treemap2);

assert!(treemap1.cardinality() == 0);
assert!(!treemap1.contains(15));
assert!(!treemap1.contains(25));

treemap3.and_inplace(&bitmap4);

assert!(treemap3.cardinality() == 1);
assert!(treemap3.contains(15));
assert!(!treemap3.contains(25));

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

Computes the symmetric difference (xor) between two treemaps and returns a new treemap.

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(15);
treemap1.add(u64::MAX);

let mut treemap2 = Treemap::create();
treemap2.add(u64::MAX);
treemap2.add(35);

let treemap3 = treemap1.xor(&treemap2);

assert!(treemap3.cardinality() == 2);
assert!(treemap3.contains(15));
assert!(!treemap3.contains(25));
assert!(treemap3.contains(35));

pub fn xor_inplace(&mut self, other: &Self)[src]

Inplace version of xor, stores result in the current treemap.

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(15);
treemap1.add(25);

let mut treemap2 = Treemap::create();
treemap2.add(25);
treemap2.add(35);

treemap1.xor_inplace(&treemap2);

assert!(treemap1.cardinality() == 2);
assert!(treemap1.contains(15));
assert!(!treemap1.contains(u64::MAX));
assert!(treemap1.contains(35));

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

Computes the difference between two bitmaps and returns the result.

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();

treemap1.add(15);
treemap1.add(u64::MAX);

let mut treemap2 = Treemap::create();

treemap2.add(u64::MAX);
treemap2.add(35);

let treemap3 = treemap1.andnot(&treemap2);

assert_eq!(treemap3.cardinality(), 1);
assert!(treemap3.contains(15));
assert!(!treemap3.contains(u64::MAX));
assert!(!treemap3.contains(35));

pub fn andnot_inplace(&mut self, other: &Self)[src]

Computes the difference between two treemaps and stores the result in the current treemap.

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();

treemap1.add(15);
treemap1.add(25);

let mut treemap2 = Treemap::create();

treemap2.add(25);
treemap2.add(35);

treemap1.andnot_inplace(&treemap2);

assert_eq!(treemap1.cardinality(), 1);
assert!(treemap1.contains(15));
assert!(!treemap1.contains(u64::MAX));
assert!(!treemap1.contains(35));

pub fn to_vec(&self) -> Vec<u64>[src]

Returns a vector containing all of the integers stored in the Treemap in a sorted order.

use std::u64;
use croaring::Treemap;

let mut treemap = Treemap::create();
treemap.add(25);
treemap.add(15);
treemap.add(u64::MAX);

assert_eq!(treemap.to_vec(), [15, 25, u64::MAX]);

pub fn of(elements: &[u64]) -> Self[src]

Creates a new treemap from a slice of u64 integers

Examples

use std::u64;
use croaring::Treemap;

let elements = vec![1, 2, u64::MAX];

let treemap = Treemap::of(&elements);

let mut treemap2 = Treemap::create();

for element in &elements {
    treemap2.add(*element);
}

assert!(treemap.contains(1));
assert!(treemap.contains(2));
assert!(treemap.contains(u64::MAX));
assert!(!treemap.contains(3));
assert_eq!(treemap, treemap2);

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

Compresses treemap's bitmaps. Returns true if any of the bitmaps were modified.

Examples

use croaring::Treemap;

let mut treemap: Treemap = (100..1000).collect();

assert_eq!(treemap.cardinality(), 900);
assert!(treemap.run_optimize());

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

Removes run-length encoding from treemap's bitmaps. Returns true if change was made to any of the bitmaps.

Examples

use croaring::Treemap;

let mut treemap: Treemap = (100..1000).collect();

assert_eq!(treemap.cardinality(), 900);
assert!(treemap.run_optimize());
assert!(treemap.remove_run_compression());

impl Treemap[src]

pub fn iter(&self) -> TreemapIterator[src]

Returns an iterator over each value stored in the bitmap. Returned values are ordered in ascending order.

Examples

use std::u64;
use croaring::Treemap;

let mut treemap = Treemap::create();
treemap.add(4);
treemap.add(3);
treemap.add(2);
treemap.add(2);
treemap.add(u64::MAX);
let mut iterator = treemap.iter();

assert_eq!(iterator.next(), Some(2));
assert_eq!(iterator.next(), Some(3));
assert_eq!(iterator.next(), Some(4));
assert_eq!(iterator.next(), Some(u64::MAX));
assert_eq!(iterator.next(), None);

Trait Implementations

impl NativeSerializer for Treemap[src]

type Item = Treemap

fn get_serialized_size_in_bytes(&self) -> usize[src]

How many bytes are required to serialize this bitmap with NativeSerializer

Examples

use croaring::Treemap;
use croaring::treemap::NativeSerializer;

let mut treemap = Treemap::create();

for i in 100..1000 {
  treemap.add(i);
}

treemap.add(std::u32::MAX as u64);
treemap.add(std::u64::MAX);

assert_eq!(treemap.get_serialized_size_in_bytes(), 1860);

impl JvmSerializer for Treemap[src]

type Item = Treemap

fn get_serialized_size_in_bytes(&self) -> usize[src]

How many bytes are required to serialize this bitmap with JvmSerializer

Examples

use croaring::Treemap;
use croaring::treemap::JvmSerializer;

let mut treemap = Treemap::create();

for i in 100..1000 {
  treemap.add(i);
}

treemap.add(std::u32::MAX as u64);
treemap.add(std::u64::MAX);

assert_eq!(treemap.get_serialized_size_in_bytes(), 1857);

impl PartialEq<Treemap> for Treemap[src]

impl Clone for Treemap[src]

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

Performs copy-assignment from source. Read more

impl Debug for Treemap[src]

impl Sub<Treemap> for Treemap[src]

type Output = Treemap

The resulting type after applying the - operator.

fn sub(self, other: Treemap) -> Treemap[src]

Syntatic sugar for .andnot

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();

treemap1.add(15);
treemap1.add(u64::MAX);

let mut treemap2 = Treemap::create();

treemap2.add(u64::MAX);
treemap2.add(35);

let treemap3 = treemap1 - treemap2;

assert_eq!(treemap3.cardinality(), 1);
assert!(treemap3.contains(15));
assert!(!treemap3.contains(u64::MAX));
assert!(!treemap3.contains(35));

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

type Output = Treemap

The resulting type after applying the - operator.

fn sub(self, other: &'a Treemap) -> Treemap[src]

Syntatic sugar for .andnot

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();

treemap1.add(15);
treemap1.add(u64::MAX);

let mut treemap2 = Treemap::create();

treemap2.add(25);
treemap2.add(u64::MAX);

let treemap3 = treemap1 - &treemap2;

assert_eq!(treemap3.cardinality(), 1);
assert!(treemap3.contains(15));
assert!(!treemap3.contains(u64::MAX));
assert!(!treemap3.contains(35));

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

type Output = Treemap

The resulting type after applying the - operator.

fn sub(self, other: &'a Treemap) -> Treemap[src]

Syntatic sugar for .andnot

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();

treemap1.add(15);
treemap1.add(u64::MAX);

let mut treemap2 = Treemap::create();

treemap2.add(25);
treemap1.add(u64::MAX);

let treemap3 = &treemap1 - &treemap2;

assert_eq!(treemap3.cardinality(), 1);
assert!(treemap3.contains(15));
assert!(!treemap3.contains(u64::MAX));
assert!(!treemap3.contains(35));

impl SubAssign<Treemap> for Treemap[src]

fn sub_assign(&mut self, other: Treemap)[src]

Syntatic sugar for .andnot_inplace

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();

treemap1.add(15);
treemap1.add(u64::MAX);

let mut treemap2 = Treemap::create();

treemap2.add(25);
treemap2.add(u64::MAX);

treemap1.andnot_inplace(&treemap2);

assert_eq!(treemap1.cardinality(), 1);
assert!(treemap1.contains(15));
assert!(!treemap1.contains(u64::MAX));
assert!(!treemap1.contains(35));

impl BitAnd<Treemap> for Treemap[src]

type Output = Treemap

The resulting type after applying the & operator.

fn bitand(self, other: Treemap) -> Treemap[src]

Syntactic sugar for .and

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(u64::MAX);

let mut treemap2 = Treemap::create();
treemap2.add(1);
treemap2.add(u64::MAX);

let treemap3 = treemap1 & treemap2;

assert!(treemap3.contains(u64::MAX));
assert!(!treemap3.contains(1));

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

type Output = Treemap

The resulting type after applying the & operator.

fn bitand(self, other: &'a Treemap) -> Treemap[src]

Syntactic sugar for .and

Examples

use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(1);

let mut treemap2 = Treemap::create();
treemap2.add(1);
treemap2.add(2);

let treemap3 = treemap1 & &treemap2;

assert!(treemap3.contains(1));
assert!(!treemap3.contains(2));

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

type Output = Treemap

The resulting type after applying the & operator.

fn bitand(self, other: &'a Treemap) -> Treemap[src]

Syntactic sugar for .and

Examples

use croaring::Treemap;

let mut treemap1: Treemap = Treemap::create();
treemap1.add(1);

let mut treemap2 = Treemap::create();
treemap2.add(1);
treemap2.add(2);

let treemap3 = &treemap1 & &treemap2;

assert!(treemap3.contains(1));
assert!(!treemap3.contains(2));

impl BitOr<Treemap> for Treemap[src]

type Output = Treemap

The resulting type after applying the | operator.

fn bitor(self, other: Treemap) -> Treemap[src]

Syntatic sugar for .or

Examples

use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(15);

let mut treemap2 = Treemap::create();
treemap2.add(25);

let treemap3 = treemap1 | treemap2;

assert!(treemap3.cardinality() == 2);
assert!(treemap3.contains(15));
assert!(treemap3.contains(25));

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

type Output = Treemap

The resulting type after applying the | operator.

fn bitor(self, other: &'a Treemap) -> Treemap[src]

Syntatic sugar for .or

Examples

use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(15);

let mut treemap2 = Treemap::create();
treemap2.add(25);

let treemap3 = treemap1 | &treemap2;

assert!(treemap3.cardinality() == 2);
assert!(treemap3.contains(15));
assert!(treemap3.contains(25));

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

type Output = Treemap

The resulting type after applying the | operator.

fn bitor(self, other: &'a Treemap) -> Treemap[src]

Syntatic sugar for .or

Examples

use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(15);

let mut treemap2 = Treemap::create();
treemap2.add(25);

let treemap3 = &treemap1 | &treemap2;

assert!(treemap3.cardinality() == 2);
assert!(treemap3.contains(15));
assert!(treemap3.contains(25));

impl BitXor<Treemap> for Treemap[src]

type Output = Treemap

The resulting type after applying the ^ operator.

fn bitxor(self, other: Treemap) -> Treemap[src]

Syntatic sugar for .xor

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(15);
treemap1.add(u64::MAX);

let mut treemap2 = Treemap::create();
treemap2.add(u64::MAX);
treemap2.add(35);

let treemap3 = treemap1 ^ treemap2;

assert!(treemap3.cardinality() == 2);
assert!(treemap3.contains(15));
assert!(!treemap3.contains(u64::MAX));
assert!(treemap3.contains(35));

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

type Output = Treemap

The resulting type after applying the ^ operator.

fn bitxor(self, other: &'a Treemap) -> Treemap[src]

Syntatic sugar for .xor

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(15);
treemap1.add(u64::MAX);

let mut treemap2 = Treemap::create();
treemap2.add(u64::MAX);
treemap2.add(35);

let treemap3 = treemap1 ^ &treemap2;

assert!(treemap3.cardinality() == 2);
assert!(treemap3.contains(15));
assert!(!treemap3.contains(u64::MAX));
assert!(treemap3.contains(35));

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

type Output = Treemap

The resulting type after applying the ^ operator.

fn bitxor(self, other: &'a Treemap) -> Treemap[src]

Syntatic sugar for .xor

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(15);
treemap1.add(u64::MAX);

let mut treemap2 = Treemap::create();
treemap2.add(u64::MAX);
treemap2.add(35);

let treemap3 = &treemap1 ^ &treemap2;

assert!(treemap3.cardinality() == 2);
assert!(treemap3.contains(15));
assert!(!treemap3.contains(u64::MAX));
assert!(treemap3.contains(35));

impl BitAndAssign<Treemap> for Treemap[src]

fn bitand_assign(&mut self, other: Treemap)[src]

Syntactic sugar for .and_inplace

Examples

use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(15);

let mut treemap2 = Treemap::create();
treemap2.add(25);

let mut treemap3 = Treemap::create();
treemap3.add(15);

let mut treemap4 = Treemap::create();
treemap4.add(15);
treemap4.add(25);

treemap1 &= treemap2;

assert!(treemap1.cardinality() == 0);
assert!(!treemap1.contains(15));
assert!(!treemap1.contains(25));

treemap3 &= treemap4;

assert!(treemap3.cardinality() == 1);
assert!(treemap3.contains(15));
assert!(!treemap3.contains(25));

impl BitOrAssign<Treemap> for Treemap[src]

fn bitor_assign(&mut self, other: Treemap)[src]

Syntatic sugar for .or_inplace

Examples

use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(15);

let mut treemap2 = Treemap::create();
treemap2.add(25);

treemap1 |= treemap2;

assert!(treemap1.cardinality() == 2);
assert!(treemap1.contains(15));
assert!(treemap1.contains(25));

impl BitXorAssign<Treemap> for Treemap[src]

fn bitxor_assign(&mut self, other: Treemap)[src]

Syntatic sugar for .xor_inplace

Examples

use std::u64;
use croaring::Treemap;

let mut treemap1 = Treemap::create();
treemap1.add(15);
treemap1.add(u64::MAX);

let mut treemap2 = Treemap::create();
treemap2.add(u64::MAX);
treemap2.add(35);

treemap1 ^= treemap2;

assert!(treemap1.cardinality() == 2);
assert!(treemap1.contains(15));
assert!(!treemap1.contains(u64::MAX));
assert!(treemap1.contains(35));

impl FromIterator<u64> for Treemap[src]

fn from_iter<I: IntoIterator<Item = u64>>(iter: I) -> Self[src]

Convenience method for creating treemap from an iterator.

Examples

use std::{u32, u64};
use croaring::Treemap;

let treemap: Treemap = (1..3).chain(u64::from(u32::MAX)+1..u64::from(u32::MAX)+10).collect();

assert!(!treemap.is_empty());
assert!(treemap.contains(1));
assert!(treemap.contains(2));
assert!(treemap.contains(u64::from(u32::MAX)+1));
assert!(treemap.contains(u64::from(u32::MAX)+5));
assert_eq!(treemap.cardinality(), 11);

Auto Trait Implementations

impl Send for Treemap

impl Sync for Treemap

Blanket Implementations

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

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

type Owned = T

The resulting type after obtaining ownership.

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

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]