Struct weak_table::WeakHashSet
source · [−]pub struct WeakHashSet<T, S = RandomState>(_);
Expand description
A hash set with weak elements, hashed on element value.
When a weak pointer expires, its mapping is lazily removed.
Implementations
sourceimpl<T: WeakKey> WeakHashSet<T, RandomState>
impl<T: WeakKey> WeakHashSet<T, RandomState>
sourcepub fn with_capacity(capacity: usize) -> Self
pub fn with_capacity(capacity: usize) -> Self
Creates an empty WeakHashSet
with the given capacity.
O(n) time
sourceimpl<T: WeakKey, S: BuildHasher> WeakHashSet<T, S>
impl<T: WeakKey, S: BuildHasher> WeakHashSet<T, S>
sourcepub fn with_hasher(hash_builder: S) -> Self
pub fn with_hasher(hash_builder: S) -> Self
Creates an empty WeakHashSet
with the given capacity and hasher.
O(n) time
sourcepub fn with_capacity_and_hasher(capacity: usize, hash_builder: S) -> Self
pub fn with_capacity_and_hasher(capacity: usize, hash_builder: S) -> Self
Creates an empty WeakHashSet
with the given capacity and hasher.
O(n) time
sourcepub fn capacity(&self) -> usize
pub fn capacity(&self) -> usize
Returns the number of elements the map can hold without reallocating.
O(1) time
sourcepub fn remove_expired(&mut self)
pub fn remove_expired(&mut self)
Removes all mappings whose keys have expired.
O(n) time
sourcepub fn reserve(&mut self, additional_capacity: usize)
pub fn reserve(&mut self, additional_capacity: usize)
Reserves room for additional elements.
O(n) time
sourcepub fn shrink_to_fit(&mut self)
pub fn shrink_to_fit(&mut self)
Shrinks the capacity to the minimum allowed to hold the current number of elements.
O(n) time
sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Is the set empty?
Note that this may return false even if all keys in the set have expired, if they haven’t been collected yet.
O(1) time
sourcepub fn load_factor(&self) -> f32
pub fn load_factor(&self) -> f32
The proportion of buckets that are used.
This is an over-approximation because of expired elements.
O(1) time
sourcepub fn contains<Q>(&self, key: &Q) -> bool where
Q: ?Sized + Eq + Hash,
T::Key: Borrow<Q>,
pub fn contains<Q>(&self, key: &Q) -> bool where
Q: ?Sized + Eq + Hash,
T::Key: Borrow<Q>,
Returns true if the map contains the specified key.
expected O(1) time; worst-case O(p) time
sourcepub fn get<Q>(&self, key: &Q) -> Option<T::Strong> where
Q: ?Sized + Eq + Hash,
T::Key: Borrow<Q>,
pub fn get<Q>(&self, key: &Q) -> Option<T::Strong> where
Q: ?Sized + Eq + Hash,
T::Key: Borrow<Q>,
Gets a strong reference to the given key, if found.
Examples
use weak_table::WeakHashSet;
use std::rc::{Rc, Weak};
use std::ops::Deref;
let mut set: WeakHashSet<Weak<String>> = WeakHashSet::new();
let a = Rc::new("a".to_owned());
set.insert(a.clone());
let also_a = set.get("a").unwrap();
assert!(Rc::ptr_eq( &a, &also_a ));
expected O(1) time; worst-case O(p) time
sourcepub fn insert(&mut self, key: T::Strong) -> bool
pub fn insert(&mut self, key: T::Strong) -> bool
Unconditionally inserts the value, returning the old value if already present. Does not replace the key.
expected O(1) time; worst-case O(p) time
sourcepub fn remove<Q>(&mut self, key: &Q) -> bool where
Q: ?Sized + Eq + Hash,
T::Key: Borrow<Q>,
pub fn remove<Q>(&mut self, key: &Q) -> bool where
Q: ?Sized + Eq + Hash,
T::Key: Borrow<Q>,
Removes the entry with the given key, if it exists, and returns the value.
expected O(1) time; worst-case O(p) time
sourcepub fn retain<F>(&mut self, f: F) where
F: FnMut(T::Strong) -> bool,
pub fn retain<F>(&mut self, f: F) where
F: FnMut(T::Strong) -> bool,
Removes all mappings not satisfying the given predicate.
Also removes any expired mappings.
O(n) time
sourcepub fn is_subset<S1>(&self, other: &WeakHashSet<T, S1>) -> bool where
S1: BuildHasher,
pub fn is_subset<S1>(&self, other: &WeakHashSet<T, S1>) -> bool where
S1: BuildHasher,
Is self a subset of other?
expected O(n) time; worst-case O(nq) time (where n is
self.capacity()
and q is the length of the probe sequences
in other
)
Trait Implementations
sourceimpl<T: Clone, S: Clone> Clone for WeakHashSet<T, S>
impl<T: Clone, S: Clone> Clone for WeakHashSet<T, S>
sourcefn clone(&self) -> WeakHashSet<T, S>
fn clone(&self) -> WeakHashSet<T, S>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl<T: WeakKey, S: BuildHasher + Default> Default for WeakHashSet<T, S>
impl<T: WeakKey, S: BuildHasher + Default> Default for WeakHashSet<T, S>
sourceimpl<T: WeakKey, S: BuildHasher> Extend<<T as WeakElement>::Strong> for WeakHashSet<T, S>
impl<T: WeakKey, S: BuildHasher> Extend<<T as WeakElement>::Strong> for WeakHashSet<T, S>
sourcefn extend<I: IntoIterator<Item = T::Strong>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = T::Strong>>(&mut self, iter: I)
Extends a collection with the contents of an iterator. Read more
sourcefn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)Extends a collection with exactly one element.
sourcefn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)Reserves capacity in a collection for the given number of additional elements. Read more
sourceimpl<T, S> FromIterator<<T as WeakElement>::Strong> for WeakHashSet<T, S> where
T: WeakKey,
S: BuildHasher + Default,
impl<T, S> FromIterator<<T as WeakElement>::Strong> for WeakHashSet<T, S> where
T: WeakKey,
S: BuildHasher + Default,
sourcefn from_iter<I: IntoIterator<Item = T::Strong>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = T::Strong>>(iter: I) -> Self
Creates a value from an iterator. Read more
sourceimpl<T: WeakKey, S> IntoIterator for WeakHashSet<T, S>
impl<T: WeakKey, S> IntoIterator for WeakHashSet<T, S>
sourceimpl<'a, T: WeakKey, S> IntoIterator for &'a WeakHashSet<T, S>
impl<'a, T: WeakKey, S> IntoIterator for &'a WeakHashSet<T, S>
sourceimpl<T, S, S1> PartialEq<WeakHashSet<T, S1>> for WeakHashSet<T, S> where
T: WeakKey,
S: BuildHasher,
S1: BuildHasher,
impl<T, S, S1> PartialEq<WeakHashSet<T, S1>> for WeakHashSet<T, S> where
T: WeakKey,
S: BuildHasher,
S1: BuildHasher,
impl<T: WeakKey, S: BuildHasher> Eq for WeakHashSet<T, S> where
T::Key: Eq,
Auto Trait Implementations
impl<T, S> RefUnwindSafe for WeakHashSet<T, S> where
S: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, S> Send for WeakHashSet<T, S> where
S: Send,
T: Send,
impl<T, S> Sync for WeakHashSet<T, S> where
S: Sync,
T: Sync,
impl<T, S> Unpin for WeakHashSet<T, S> where
S: Unpin,
impl<T, S> UnwindSafe for WeakHashSet<T, S> where
S: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more