pub struct SsoHashSet<T> {
map: SsoHashMap<T, ()>,
}
Expand description
Small-storage-optimized implementation of a set.
Stores elements in a small array up to a certain length
and switches to HashSet
when that length is exceeded.
Fields§
§map: SsoHashMap<T, ()>
Implementations§
source§impl<T> SsoHashSet<T>
impl<T> SsoHashSet<T>
sourcepub fn new() -> SsoHashSet<T>
pub fn new() -> SsoHashSet<T>
Creates an empty SsoHashSet
.
sourcepub fn with_capacity(cap: usize) -> SsoHashSet<T>
pub fn with_capacity(cap: usize) -> SsoHashSet<T>
Creates an empty SsoHashSet
with the specified capacity.
sourcepub fn capacity(&self) -> usize
pub fn capacity(&self) -> usize
Returns the number of elements the set can hold without reallocating.
source§impl<T> SsoHashSet<T>
impl<T> SsoHashSet<T>
sourcepub fn reserve(&mut self, additional: usize)
pub fn reserve(&mut self, additional: usize)
Reserves capacity for at least additional
more elements to be inserted
in the SsoHashSet
. The collection may reserve more space to avoid
frequent reallocations.
sourcepub fn shrink_to_fit(&mut self)
pub fn shrink_to_fit(&mut self)
Shrinks the capacity of the set as much as possible. It will drop down as much as possible while maintaining the internal rules and possibly leaving some space in accordance with the resize policy.
sourcepub fn take(&mut self, value: &T) -> Option<T>
pub fn take(&mut self, value: &T) -> Option<T>
Removes and returns the value in the set, if any, that is equal to the given one.
sourcepub fn get(&self, value: &T) -> Option<&T>
pub fn get(&self, value: &T) -> Option<&T>
Returns a reference to the value in the set, if any, that is equal to the given value.
sourcepub fn insert(&mut self, elem: T) -> bool
pub fn insert(&mut self, elem: T) -> bool
Adds a value to the set.
Returns whether the value was newly inserted. That is:
- If the set did not previously contain this value,
true
is returned. - If the set already contained this value,
false
is returned.
Trait Implementations§
source§impl<T> Clone for SsoHashSet<T>where
T: Clone,
impl<T> Clone for SsoHashSet<T>where
T: Clone,
source§fn clone(&self) -> SsoHashSet<T>
fn clone(&self) -> SsoHashSet<T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<T> Debug for SsoHashSet<T>where
T: Debug,
impl<T> Debug for SsoHashSet<T>where
T: Debug,
source§impl<T> Default for SsoHashSet<T>
impl<T> Default for SsoHashSet<T>
source§fn default() -> SsoHashSet<T>
fn default() -> SsoHashSet<T>
source§impl<'a, T> Extend<&'a T> for SsoHashSet<T>
impl<'a, T> Extend<&'a T> for SsoHashSet<T>
source§fn extend<I>(&mut self, iter: I)where
I: IntoIterator<Item = &'a T>,
fn extend<I>(&mut self, iter: I)where
I: IntoIterator<Item = &'a T>,
source§fn extend_one(&mut self, _: &'a T)
fn extend_one(&mut self, _: &'a T)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)source§impl<T> Extend<T> for SsoHashSet<T>
impl<T> Extend<T> for SsoHashSet<T>
source§fn extend<I>(&mut self, iter: I)where
I: IntoIterator<Item = T>,
fn extend<I>(&mut self, iter: I)where
I: IntoIterator<Item = T>,
source§fn extend_one(&mut self, item: T)
fn extend_one(&mut self, item: T)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)source§impl<T> FromIterator<T> for SsoHashSet<T>
impl<T> FromIterator<T> for SsoHashSet<T>
source§fn from_iter<I>(iter: I) -> SsoHashSet<T>where
I: IntoIterator<Item = T>,
fn from_iter<I>(iter: I) -> SsoHashSet<T>where
I: IntoIterator<Item = T>,
source§impl<'a, T> IntoIterator for &'a SsoHashSet<T>
impl<'a, T> IntoIterator for &'a SsoHashSet<T>
Auto Trait Implementations§
impl<T> Freeze for SsoHashSet<T>where
T: Freeze,
impl<T> RefUnwindSafe for SsoHashSet<T>where
T: RefUnwindSafe,
impl<T> Send for SsoHashSet<T>where
T: Send,
impl<T> Sync for SsoHashSet<T>where
T: Sync,
impl<T> Unpin for SsoHashSet<T>where
T: Unpin,
impl<T> UnwindSafe for SsoHashSet<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.