Struct tinyset::set::Set [] [src]

pub struct Set<T: Copy + Eq + Hash> { /* fields omitted */ }

A set that is a FnvHashSet when it has many elements, but is just an array for small set sizes.

As with the FnvHashSet type, a Set requires that the elements implement the Eq and Hash traits. This can frequently be achieved by using #[derive(PartialEq, Eq, Hash)]. In addition, Set requires that the elements implement the Copy trait, and really they should be pretty small, since Set always stores room for CAPACITY elements.

Methods

impl<T: Copy + Eq + Hash> Set<T>
[src]

Creates an empty set..

Creates an empty set..

Creates an empty set with the specified capacity.

Returns the number of elements in the set.

Reserves capacity for at least additional more elements to be inserted in the set. The collection may reserve more space to avoid frequent reallocations.

Adds a value to the set.

If the set did not have this value present, true is returned.

If the set did have this value present, false is returned.

Removes an element, and returns true if that element was present.

Returns true if the set contains a value.

Returns an iterator over the set.

Clears the set, returning all elements in an iterator.

Trait Implementations

impl<T: Debug + Copy + Eq + Hash> Debug for Set<T>
[src]

Formats the value using the given formatter.

impl<T: Clone + Copy + Eq + Hash> Clone for Set<T>
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl<T: Hash + Copy + Eq> FromIterator<T> for Set<T>
[src]

Creates a value from an iterator. Read more

impl<'a, T: Eq + Hash + Copy> IntoIterator for &'a Set<T>
[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<T: Eq + Hash + Copy> IntoIterator for Set<T>
[src]

The type of the elements being iterated over.

Which kind of iterator are we turning this into?

Creates a consuming iterator, that is, one that moves each value out of the set in arbitrary order. The set cannot be used after calling this.

Examples

use tinyset::Set;
let mut set: Set<u32> = Set::new();
set.insert(2);
set.insert(5);

// Not possible to collect to a Vec<String> with a regular `.iter()`.
let v: Vec<_> = set.into_iter().collect();

// Will print in an arbitrary order.
for x in &v {
    println!("{}", x);
}

impl<'a, 'b, T: Eq + Hash + Copy> Sub<&'b Set<T>> for &'a Set<T>
[src]

The resulting type after applying the - operator

Returns the difference of self and rhs as a new Set<T>.

Examples

use tinyset::Set;

let a: Set<u32> = vec![1, 2, 3].into_iter().collect();
let b: Set<u32> = vec![3, 4, 5].into_iter().collect();

let set = &a - &b;

let mut i = 0;
let expected = [1, 2];
for x in &set {
    assert!(expected.contains(x));
    i += 1;
}
assert_eq!(i, expected.len());

impl<T: Eq + Hash + Copy> Extend<T> for Set<T>
[src]

Adds a bunch of elements to the set

Examples

use tinyset::Set;

let mut a: Set<u32> = vec![1, 2, 3].into_iter().collect();
a.extend(vec![3, 4, 5]);

let mut i = 0;
let expected = [1, 2, 3, 4, 5];
for x in &a {
    assert!(expected.contains(x));
    i += 1;
}
assert_eq!(i, expected.len());

impl<'a, 'b, T: Eq + Hash + Copy> BitOr<&'b Set<T>> for &'a Set<T>
[src]

The resulting type after applying the | operator

Returns the union of self and rhs as a new Set<T>.

Examples

use tinyset::Set;

let a: Set<u32> = vec![1, 2, 3].into_iter().collect();
let b: Set<u32> = vec![3, 4, 5].into_iter().collect();

let set = &a | &b;

let mut i = 0;
let expected = [1, 2, 3, 4, 5];
for x in &set {
    assert!(expected.contains(x));
    i += 1;
}
assert_eq!(i, expected.len());