VecSet

Struct VecSet 

Source
pub struct VecSet<T>(/* private fields */);
Expand description

A set. It is a logic error for any value to change such that its equality under the Eq trait changes while it is in the set. To determine if two values are “the same”, Eq is used.

Implementations§

Source§

impl<T> VecSet<T>

Source

pub fn new() -> Self

Create a new VecSet.

Source

pub fn with_capacity(capacity: usize) -> Self

Create a new VecSet with a given pre-allocated capacity. May allocate more than requested.

Source

pub fn capacity(&self) -> usize

Get the allocated capacity of the set.

Source

pub fn iter(&self) -> Iter<'_, T>

Get an iterator over the values as references.

Source

pub fn len(&self) -> usize

Get the amount of values in the set.

Source

pub fn is_empty(&self) -> bool

Check if the set is empty.

Source

pub fn drain(&mut self) -> Drain<'_, T>

Empty the set and return an iterator over the cleared values.

Source

pub fn retain<F>(&mut self, f: F)
where F: FnMut(&T) -> bool,

Remove all values that do not satisfy a given predicate.

Source

pub fn clear(&mut self)

Remove all values.

Source

pub fn reserve(&mut self, additional: usize)

Reserve additional space. May allocate more than requested.

§Panics

Panics if the new allocation fails.

Source

pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>

Like reserve, but returns a Result instead of panicking.

Source

pub fn shrink_to_fit(&mut self)

Shrink the capacity of the set as much as possible. May keep more than precisely needed.

Source

pub fn shrink_to(&mut self, min_capacity: usize)

Shrink the capacity of the set with a lower limit. May keep more than precisely needed.

Source§

impl<T: Eq> VecSet<T>

Source

pub fn difference<'a>(&'a self, other: &'a VecSet<T>) -> Difference<'a, T>

Get an iterator over the set difference between two sets.

Source

pub fn symmetric_difference<'a>( &'a self, other: &'a VecSet<T>, ) -> SymmetricDifference<'a, T>

Get an iterator over the symmetric set difference between two sets.

Source

pub fn intersection<'a>(&'a self, other: &'a VecSet<T>) -> Intersection<'a, T>

Get an iterator over the intersection of two sets.

Source

pub fn union<'a>(&'a self, other: &'a VecSet<T>) -> Union<'a, T>

Get an iterator over the union of two sets.

Source

pub fn contains<Q>(&self, value: &Q) -> bool
where T: Borrow<Q>, Q: Eq + ?Sized,

Check if the set contains a given value.

Source

pub fn get<Q>(&self, value: &Q) -> Option<&T>
where T: Borrow<Q>, Q: Eq + ?Sized,

Get a value stored in the set.

Source

pub fn is_disjoint(&self, other: &VecSet<T>) -> bool

Check if two sets are disjoint.

Source

pub fn is_subset(&self, other: &VecSet<T>) -> bool

Check if one set is a subset of another.

Source

pub fn is_superset(&self, other: &VecSet<T>) -> bool

Check if one set is a superset of another.

Source

pub fn insert(&mut self, value: T) -> bool

Insert a value into the set. Returns true if the value was successfully inserted, and false if the value was already present.

Source

pub fn replace(&mut self, value: T) -> Option<T>

Replace a value with a new, equal value. If the value is replaced successfully, the old value is returned.

Source

pub fn remove<Q>(&mut self, value: &Q) -> bool
where T: Borrow<Q>, Q: Eq + ?Sized,

Remove a value from the set.

Source

pub fn take<Q>(&mut self, value: &Q) -> Option<T>
where T: Borrow<Q>, Q: Eq + ?Sized,

Remove a value from the set. If the value is succesfully removed, it is returned.

Source§

impl<T: Eq> VecSet<T>

Source

pub fn eq_ordered(&self, other: &Self)

Check two sets for equality while considering the order of values.

Trait Implementations§

Source§

impl<T: Eq + Clone> BitAnd<&VecSet<T>> for &VecSet<T>

Source§

fn bitand(self, rhs: &VecSet<T>) -> Self::Output

Get the intersection of two sets as a new set.

Source§

type Output = VecSet<T>

The resulting type after applying the & operator.
Source§

impl<T: Eq + Clone> BitOr<&VecSet<T>> for &VecSet<T>

Source§

fn bitor(self, rhs: &VecSet<T>) -> Self::Output

Get the union of two sets as a new set.

Source§

type Output = VecSet<T>

The resulting type after applying the | operator.
Source§

impl<T: Eq + Clone> BitXor<&VecSet<T>> for &VecSet<T>

Source§

fn bitxor(self, rhs: &VecSet<T>) -> Self::Output

Get the symmetric set difference between two sets as a new set.

Source§

type Output = VecSet<T>

The resulting type after applying the ^ operator.
Source§

impl<T: Clone> Clone for VecSet<T>

Source§

fn clone(&self) -> VecSet<T>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for VecSet<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T> Default for VecSet<T>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'a, T: Eq + Copy> Extend<&'a T> for VecSet<T>

Source§

fn extend<I: IntoIterator<Item = &'a T>>(&mut self, iter: I)

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

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl<T: Eq> Extend<T> for VecSet<T>

Source§

fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I)

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

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl<T: Eq, const N: usize> From<[T; N]> for VecSet<T>

Source§

fn from(arr: [T; N]) -> Self

Converts to this type from the input type.
Source§

impl<T: Eq> FromIterator<T> for VecSet<T>

Source§

fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self

Creates a value from an iterator. Read more
Source§

impl<'a, T> IntoIterator for &'a VecSet<T>

Source§

type Item = &'a T

The type of the elements being iterated over.
Source§

type IntoIter = Iter<'a, T>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
Source§

impl<T> IntoIterator for VecSet<T>

Source§

fn into_iter(self) -> Self::IntoIter

Get an iterator over the values.

Source§

type Item = T

The type of the elements being iterated over.
Source§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
Source§

impl<T: PartialEq + Ord> PartialEq for VecSet<T>

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T: Eq + Clone> Sub<&VecSet<T>> for &VecSet<T>

Source§

fn sub(self, rhs: &VecSet<T>) -> Self::Output

Get the set difference between two sets as a new set.

Source§

type Output = VecSet<T>

The resulting type after applying the - operator.
Source§

impl<T: Eq + Ord> Eq for VecSet<T>

Auto Trait Implementations§

§

impl<T> Freeze for VecSet<T>

§

impl<T> RefUnwindSafe for VecSet<T>
where T: RefUnwindSafe,

§

impl<T> Send for VecSet<T>
where T: Send,

§

impl<T> Sync for VecSet<T>
where T: Sync,

§

impl<T> Unpin for VecSet<T>
where T: Unpin,

§

impl<T> UnwindSafe for VecSet<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.