Struct bitarray_set::BitArraySet [] [src]

pub struct BitArraySet<B: BitsIn, NBits: Unsigned + NonZero> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
{ /* fields omitted */ }

Methods

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

Creates a new empty BitArraySet.

Examples

extern crate typenum;
use typenum::{Unsigned, U8};
use bitarray_set::BitArraySet;

let mut s = BitArraySet::<u32, U8>::new();

Creates a new BitArraySet from the given bit array.

Examples

extern crate typenum;
extern crate bit_array;
extern crate bitarray_set;
use typenum::{Unsigned, U8};
use bit_array::BitArray;
use bitarray_set::BitArraySet;

fn main() {
    let bv = BitArray::<u32, U8>::from_bytes(&[0b01100000]);
    let s = BitArraySet::from_bit_array(bv);

    // Print 1, 2 in arbitrary order
    for x in s.iter() {
        println!("{}", x);
    }
}

Consumes this set to return the underlying bit array.

Examples

extern crate typenum;
use typenum::{Unsigned, U8};
use bitarray_set::BitArraySet;

let mut s = BitArraySet::<u32, U8>::new();
s.insert(0);
s.insert(3);

let bv = s.into_bit_array();
assert!(bv[0]);
assert!(bv[3]);

Returns a reference to the underlying bit array.

Examples

extern crate typenum;
use typenum::{Unsigned, U8};
use bitarray_set::BitArraySet;

let mut s = BitArraySet::<u32, U8>::new();
s.insert(0);

let bv = s.get_ref();
assert_eq!(bv[0], true);

Iterator over each usize stored in the BitArraySet.

Examples

extern crate typenum;
use typenum::{Unsigned, U8};
use bitarray_set::BitArraySet;

let s = BitArraySet::<u32, U8>::from_bytes(&[0b01001010]);

// Print 1, 4, 6 in arbitrary order
for x in s.iter() {
    println!("{}", x);
}

Iterator over each usize stored in self union other. See union_with for an efficient in-place version.

Examples

extern crate typenum;
use typenum::{Unsigned, U8};
use bitarray_set::BitArraySet;

let a = BitArraySet::<u32, U8>::from_bytes(&[0b01101000]);
let b = BitArraySet::<u32, U8>::from_bytes(&[0b10100000]);

// Print 0, 1, 2, 4 in arbitrary order
for x in a.union(&b) {
    println!("{}", x);
}

Iterator over each usize stored in self intersect other. See intersect_with for an efficient in-place version.

Examples

extern crate typenum;
use typenum::{Unsigned, U8};
use bitarray_set::BitArraySet;

let a = BitArraySet::<u32, U8>::from_bytes(&[0b01101000]);
let b = BitArraySet::<u32, U8>::from_bytes(&[0b10100000]);

// Print 2
for x in a.intersection(&b) {
    println!("{}", x);
}

Iterator over each usize stored in the self setminus other. See difference_with for an efficient in-place version.

Examples

extern crate typenum;
use typenum::{Unsigned, U8};
use bitarray_set::BitArraySet;

let a = BitArraySet::<u32, U8>::from_bytes(&[0b01101000]);
let b = BitArraySet::<u32, U8>::from_bytes(&[0b10100000]);

// Print 1, 4 in arbitrary order
for x in a.difference(&b) {
    println!("{}", x);
}

// Note that difference is not symmetric,
// and `b - a` means something else.
// This prints 0
for x in b.difference(&a) {
    println!("{}", x);
}

Iterator over each usize stored in the symmetric difference of self and other. See symmetric_difference_with for an efficient in-place version.

Examples

extern crate typenum;
use typenum::{Unsigned, U8};
use bitarray_set::BitArraySet;

let a = BitArraySet::<u32, U8>::from_bytes(&[0b01101000]);
let b = BitArraySet::<u32, U8>::from_bytes(&[0b10100000]);

// Print 0, 1, 4 in arbitrary order
for x in a.symmetric_difference(&b) {
    println!("{}", x);
}

Unions in-place with the specified other bit array.

Examples

extern crate typenum;
use typenum::{Unsigned, U8};
use bitarray_set::BitArraySet;

let a   = 0b01101000;
let b   = 0b10100000;
let res = 0b11101000;

let mut a = BitArraySet::<u32, U8>::from_bytes(&[a]);
let b = BitArraySet::<u32, U8>::from_bytes(&[b]);
let res = BitArraySet::<u32, U8>::from_bytes(&[res]);

a.union_with(&b);
assert_eq!(a, res);

Intersects in-place with the specified other bit array.

Examples

extern crate typenum;
use typenum::{Unsigned, U8};
use bitarray_set::BitArraySet;

let a   = 0b01101000;
let b   = 0b10100000;
let res = 0b00100000;

let mut a = BitArraySet::<u32, U8>::from_bytes(&[a]);
let b = BitArraySet::<u32, U8>::from_bytes(&[b]);
let res = BitArraySet::<u32, U8>::from_bytes(&[res]);

a.intersect_with(&b);
assert_eq!(a, res);

Makes this bit array the difference with the specified other bit array in-place.

Examples

extern crate typenum;
use typenum::{Unsigned, U8};
use bitarray_set::BitArraySet;

let a   = 0b01101000;
let b   = 0b10100000;
let a_b = 0b01001000; // a - b
let b_a = 0b10000000; // b - a

let mut bva = BitArraySet::<u32, U8>::from_bytes(&[a]);
let bvb = BitArraySet::<u32, U8>::from_bytes(&[b]);
let bva_b = BitArraySet::<u32, U8>::from_bytes(&[a_b]);
let bvb_a = BitArraySet::<u32, U8>::from_bytes(&[b_a]);

bva.difference_with(&bvb);
assert_eq!(bva, bva_b);

let bva = BitArraySet::<u32, U8>::from_bytes(&[a]);
let mut bvb = BitArraySet::<u32, U8>::from_bytes(&[b]);

bvb.difference_with(&bva);
assert_eq!(bvb, bvb_a);

Makes this bit array the symmetric difference with the specified other bit array in-place.

Examples

extern crate typenum;
use typenum::{Unsigned, U8};
use bitarray_set::BitArraySet;

let a   = 0b01101000;
let b   = 0b10100000;
let res = 0b11001000;

let mut a = BitArraySet::<u32, U8>::from_bytes(&[a]);
let b = BitArraySet::<u32, U8>::from_bytes(&[b]);
let res = BitArraySet::<u32, U8>::from_bytes(&[res]);

a.symmetric_difference_with(&b);
assert_eq!(a, res);

Returns the number of set bits in this set.

Returns whether there are no bits set in this set

Clears all bits in this set

Returns true if this set contains the specified integer.

Returns true if the set has no elements in common with other. This is equivalent to checking for an empty intersection.

Returns true if the set is a subset of another.

Returns true if the set is a superset of another.

Adds a value to the set. Returns true if the value was not already present in the set.

Removes a value from the set. Returns true if the value was present in the set.

Trait Implementations

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> Clone for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> Default for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

Returns the "default value" for a type. Read more

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> FromIterator<usize> for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

Creates a value from an iterator. Read more

impl<B: BitsIn + BitBlock + Default + BitAnd + BitOr, NBits: Unsigned + NonZero> Extend<usize> for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

Extends a collection with the contents of an iterator. Read more

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> PartialOrd for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> Ord for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

This method returns an Ordering between self and other. Read more

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> PartialEq for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> Eq for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> Debug for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

Formats the value using the given formatter.

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> Hash for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

Feeds this value into the given [Hasher]. Read more

Feeds a slice of this type into the given [Hasher]. Read more

impl<'a, B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> IntoIterator for &'a BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

The type of the elements being iterated over.

Which kind of iterator are we turning this into?

Creates an iterator from a value. Read more

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> Not for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

The resulting type after applying the ! operator

The method for the unary ! operator

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> BitAnd for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

The resulting type after applying the & operator

The method for the & operator

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> BitAndAssign for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

The method for the &= operator

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> BitOr for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

The resulting type after applying the | operator

The method for the | operator

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> BitOrAssign for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

The method for the |= operator

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> BitXor for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

The resulting type after applying the ^ operator

The method for the ^ operator

impl<B: BitsIn + BitBlock + Default, NBits: Unsigned + NonZero> BitXorAssign for BitArraySet<B, NBits> where
    NBits: Add<<B as BitsIn>::Output>,
    <NBits as Add<<B as BitsIn>::Output>>::Output: Sub<B1>,
    <<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output: Div<<B as BitsIn>::Output>,
    <<<NBits as Add<<B as BitsIn>::Output>>::Output as Sub<B1>>::Output as Div<<B as BitsIn>::Output>>::Output: ArrayLength<B>, 
[src]

The method for the ^= operator