sw_croaring/
lib.rs

1//! Rust wrapper for CRoaring (a C/C++ implementation at https://github.com/RoaringBitmap/CRoaring)
2//!
3//! The original Java version can be found at https://github.com/RoaringBitmap/RoaringBitmap
4//! # Example
5//!
6//! ```rust
7//! use croaring::Bitmap;
8//!
9//! let mut rb1 = Bitmap::create();
10//! rb1.add(1);
11//! rb1.add(2);
12//! rb1.add(3);
13//! rb1.add(4);
14//! rb1.add(5);
15//! rb1.add(100);
16//! rb1.add(1000);
17//! rb1.run_optimize();
18//!
19//! let mut rb2 = Bitmap::create();
20//! rb2.add(3);
21//! rb2.add(4);
22//! rb2.add(1000);
23//! rb2.run_optimize();
24//!
25//! let mut rb3 = Bitmap::create();
26//!
27//! assert_eq!(rb1.cardinality(), 7);
28//! assert!(rb1.contains(3));
29//!
30//! rb1.and_inplace(&rb2);
31//! rb3.add(5);
32//! rb3.or_inplace(&rb1);
33//!
34//! let mut rb4 = Bitmap::fast_or(&[&rb1, &rb2, &rb3]);
35//!
36//! rb1.and_inplace(&rb2);
37//! println!("{:?}", rb1);
38//!
39//! rb3.add(5);
40//! rb3.or_inplace(&rb1);
41//!
42//! println!("{:?}", rb1);
43//!
44//! rb3.add(5);
45//! rb3.or_inplace(&rb1);
46//!
47//! println!("{:?}", rb3.to_vec());
48//! println!("{:?}", rb3);
49//! println!("{:?}", rb4);
50//!
51//! rb4 = Bitmap::fast_or(&[&rb1, &rb2, &rb3]);
52//!
53//! println!("{:?}", rb4);
54//! ```
55
56extern crate stack_croaring_sys as ffi;
57extern crate libc;
58
59pub struct Bitmap {
60    bitmap: *mut ffi::roaring_bitmap_s,
61}
62
63unsafe impl Sync for Bitmap {}
64unsafe impl Send for Bitmap {}
65
66pub type Statistics = ffi::roaring_statistics_s;
67
68mod imp;
69mod iter;
70mod ops;