pub struct DashSet<K, S = RandomState> { /* private fields */ }
Expand description
DashSet is a thin wrapper around DashMap
using ()
as the value type. It uses
methods and types which are more convenient to work with on a set.
Implementations
sourceimpl<'a, K: 'a + Eq + Hash> DashSet<K, RandomState>
impl<'a, K: 'a + Eq + Hash> DashSet<K, RandomState>
sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new DashSet with a capacity of 0.
Examples
use dashmap::DashSet;
let games = DashSet::new();
games.insert("Veloren");
sourcepub fn with_capacity(capacity: usize) -> Self
pub fn with_capacity(capacity: usize) -> Self
Creates a new DashMap with a specified starting capacity.
Examples
use dashmap::DashSet;
let numbers = DashSet::with_capacity(2);
numbers.insert(2);
numbers.insert(8);
sourceimpl<'a, K: 'a + Eq + Hash, S: BuildHasher + Clone> DashSet<K, S>
impl<'a, K: 'a + Eq + Hash, S: BuildHasher + Clone> DashSet<K, S>
sourcepub fn with_hasher(hasher: S) -> Self
pub fn with_hasher(hasher: S) -> Self
Creates a new DashMap with a capacity of 0 and the provided hasher.
Examples
use dashmap::DashSet;
use std::collections::hash_map::RandomState;
let s = RandomState::new();
let games = DashSet::with_hasher(s);
games.insert("Veloren");
sourcepub fn with_capacity_and_hasher(capacity: usize, hasher: S) -> Self
pub fn with_capacity_and_hasher(capacity: usize, hasher: S) -> Self
Creates a new DashMap with a specified starting capacity and hasher.
Examples
use dashmap::DashSet;
use std::collections::hash_map::RandomState;
let s = RandomState::new();
let numbers = DashSet::with_capacity_and_hasher(2, s);
numbers.insert(2);
numbers.insert(8);
sourcepub fn hash_usize<T: Hash>(&self, item: &T) -> usize
pub fn hash_usize<T: Hash>(&self, item: &T) -> usize
Hash a given item to produce a usize. Uses the provided or default HashBuilder.
sourcepub fn shards(&self) -> &[RwLock<HashMap<K, SharedValue<()>, S>>]
pub fn shards(&self) -> &[RwLock<HashMap<K, SharedValue<()>, S>>]
Allows you to peek at the inner shards that store your data. You should probably not use this unless you know what you are doing.
Requires the raw-api
feature to be enabled.
Examples
use dashmap::DashSet;
let set = DashSet::<()>::new();
println!("Amount of shards: {}", set.shards().len());
sourcepub fn determine_map<Q>(&self, key: &Q) -> usize where
K: Borrow<Q>,
Q: Hash + Eq + ?Sized,
pub fn determine_map<Q>(&self, key: &Q) -> usize where
K: Borrow<Q>,
Q: Hash + Eq + ?Sized,
Finds which shard a certain key is stored in. You should probably not use this unless you know what you are doing. Note that shard selection is dependent on the default or provided HashBuilder.
Requires the raw-api
feature to be enabled.
Examples
use dashmap::DashSet;
let set = DashSet::new();
set.insert("coca-cola");
println!("coca-cola is stored in shard: {}", set.determine_map("coca-cola"));
sourcepub fn determine_shard(&self, hash: usize) -> usize
pub fn determine_shard(&self, hash: usize) -> usize
Finds which shard a certain hash is stored in.
Requires the raw-api
feature to be enabled.
Examples
use dashmap::DashSet;
let set: DashSet<i32> = DashSet::new();
let key = "key";
let hash = set.hash_usize(&key);
println!("hash is stored in shard: {}", set.determine_shard(hash));
sourcepub fn insert(&self, key: K) -> bool
pub fn insert(&self, key: K) -> bool
Inserts a key into the set. Returns true if the key was not already in the set.
Examples
use dashmap::DashSet;
let set = DashSet::new();
set.insert("I am the key!");
sourcepub fn remove<Q>(&self, key: &Q) -> Option<K> where
K: Borrow<Q>,
Q: Hash + Eq + ?Sized,
pub fn remove<Q>(&self, key: &Q) -> Option<K> where
K: Borrow<Q>,
Q: Hash + Eq + ?Sized,
Removes an entry from the map, returning the key if it existed in the map.
Examples
use dashmap::DashSet;
let soccer_team = DashSet::new();
soccer_team.insert("Jack");
assert_eq!(soccer_team.remove("Jack").unwrap(), "Jack");
sourcepub fn remove_if<Q>(&self, key: &Q, f: impl FnOnce(&K) -> bool) -> Option<K> where
K: Borrow<Q>,
Q: Hash + Eq + ?Sized,
pub fn remove_if<Q>(&self, key: &Q, f: impl FnOnce(&K) -> bool) -> Option<K> where
K: Borrow<Q>,
Q: Hash + Eq + ?Sized,
Removes an entry from the set, returning the key if the entry existed and the provided conditional function returned true.
use dashmap::DashSet;
let soccer_team = DashSet::new();
soccer_team.insert("Sam");
soccer_team.remove_if("Sam", |player| player.starts_with("Ja"));
assert!(soccer_team.contains("Sam"));
use dashmap::DashSet;
let soccer_team = DashSet::new();
soccer_team.insert("Sam");
soccer_team.remove_if("Jacob", |player| player.starts_with("Ja"));
assert!(!soccer_team.contains("Jacob"));
sourcepub fn iter(&'a self) -> Iter<'a, K, S, DashMap<K, (), S>>ⓘNotable traits for Iter<'a, K, S, M>impl<'a, K: Eq + Hash, S: 'a + BuildHasher + Clone, M: Map<'a, K, (), S>> Iterator for Iter<'a, K, S, M> type Item = RefMulti<'a, K, S>;
pub fn iter(&'a self) -> Iter<'a, K, S, DashMap<K, (), S>>ⓘNotable traits for Iter<'a, K, S, M>impl<'a, K: Eq + Hash, S: 'a + BuildHasher + Clone, M: Map<'a, K, (), S>> Iterator for Iter<'a, K, S, M> type Item = RefMulti<'a, K, S>;
Creates an iterator over a DashMap yielding immutable references.
Examples
use dashmap::DashSet;
let words = DashSet::new();
words.insert("hello");
assert_eq!(words.iter().count(), 1);
sourcepub fn get<Q>(&'a self, key: &Q) -> Option<Ref<'a, K, S>> where
K: Borrow<Q>,
Q: Hash + Eq + ?Sized,
pub fn get<Q>(&'a self, key: &Q) -> Option<Ref<'a, K, S>> where
K: Borrow<Q>,
Q: Hash + Eq + ?Sized,
Get a reference to an entry in the set
Examples
use dashmap::DashSet;
let youtubers = DashSet::new();
youtubers.insert("Bosnian Bill");
assert_eq!(*youtubers.get("Bosnian Bill").unwrap(), "Bosnian Bill");
sourcepub fn shrink_to_fit(&self)
pub fn shrink_to_fit(&self)
Remove excess capacity to reduce memory usage.
sourcepub fn retain(&self, f: impl FnMut(&K) -> bool)
pub fn retain(&self, f: impl FnMut(&K) -> bool)
Retain elements that whose predicates return true and discard elements whose predicates return false.
Examples
use dashmap::DashSet;
let people = DashSet::new();
people.insert("Albin");
people.insert("Jones");
people.insert("Charlie");
people.retain(|name| name.contains('i'));
assert_eq!(people.len(), 2);
sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Fetches the total number of keys stored in the set.
Examples
use dashmap::DashSet;
let people = DashSet::new();
people.insert("Albin");
people.insert("Jones");
people.insert("Charlie");
assert_eq!(people.len(), 3);
sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Checks if the set is empty or not.
Examples
use dashmap::DashSet;
let map = DashSet::<()>::new();
assert!(map.is_empty());
Trait Implementations
sourceimpl<'de, K, S> Deserialize<'de> for DashSet<K, S> where
K: Deserialize<'de> + Eq + Hash,
S: BuildHasher + Clone + Default,
impl<'de, K, S> Deserialize<'de> for DashSet<K, S> where
K: Deserialize<'de> + Eq + Hash,
S: BuildHasher + Clone + Default,
sourcefn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl<K: Eq + Hash, S: BuildHasher + Clone> Extend<K> for DashSet<K, S>
impl<K: Eq + Hash, S: BuildHasher + Clone> Extend<K> for DashSet<K, S>
sourcefn extend<T: IntoIterator<Item = K>>(&mut self, iter: T)
fn extend<T: IntoIterator<Item = K>>(&mut self, iter: T)
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<K: Eq + Hash, S: BuildHasher + Clone + Default> FromIterator<K> for DashSet<K, S>
impl<K: Eq + Hash, S: BuildHasher + Clone + Default> FromIterator<K> for DashSet<K, S>
sourcefn from_iter<I: IntoIterator<Item = K>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = K>>(iter: I) -> Self
Creates a value from an iterator. Read more
sourceimpl<K, S> FromParallelIterator<K> for DashSet<K, S> where
K: Send + Sync + Eq + Hash,
S: Send + Sync + Clone + Default + BuildHasher,
impl<K, S> FromParallelIterator<K> for DashSet<K, S> where
K: Send + Sync + Eq + Hash,
S: Send + Sync + Clone + Default + BuildHasher,
sourcefn from_par_iter<I>(par_iter: I) -> Self where
I: IntoParallelIterator<Item = K>,
fn from_par_iter<I>(par_iter: I) -> Self where
I: IntoParallelIterator<Item = K>,
Creates an instance of the collection from the parallel iterator par_iter
. Read more
sourceimpl<'a, K: Eq + Hash, S: BuildHasher + Clone> IntoIterator for DashSet<K, S>
impl<'a, K: Eq + Hash, S: BuildHasher + Clone> IntoIterator for DashSet<K, S>
sourceimpl<K, S> IntoParallelIterator for DashSet<K, S> where
K: Send + Eq + Hash,
S: Send + Clone + BuildHasher,
impl<K, S> IntoParallelIterator for DashSet<K, S> where
K: Send + Eq + Hash,
S: Send + Clone + BuildHasher,
type Iter = OwningIter<K, S>
type Iter = OwningIter<K, S>
The parallel iterator type that will be created.
type Item = K
type Item = K
The type of item that the parallel iterator will produce.
sourcefn into_par_iter(self) -> Self::Iter
fn into_par_iter(self) -> Self::Iter
Converts self
into a parallel iterator. Read more
sourceimpl<'a, K, S> IntoParallelIterator for &'a DashSet<K, S> where
K: Send + Sync + Eq + Hash,
S: Send + Sync + Clone + BuildHasher,
impl<'a, K, S> IntoParallelIterator for &'a DashSet<K, S> where
K: Send + Sync + Eq + Hash,
S: Send + Sync + Clone + BuildHasher,
sourceimpl<K, S> ParallelExtend<K> for DashSet<K, S> where
K: Send + Sync + Eq + Hash,
S: Send + Sync + Clone + BuildHasher,
impl<K, S> ParallelExtend<K> for DashSet<K, S> where
K: Send + Sync + Eq + Hash,
S: Send + Sync + Clone + BuildHasher,
sourcefn par_extend<I>(&mut self, par_iter: I) where
I: IntoParallelIterator<Item = K>,
fn par_extend<I>(&mut self, par_iter: I) where
I: IntoParallelIterator<Item = K>,
Extends an instance of the collection with the elements drawn
from the parallel iterator par_iter
. Read more
sourceimpl<K, S> ParallelExtend<K> for &DashSet<K, S> where
K: Send + Sync + Eq + Hash,
S: Send + Sync + Clone + BuildHasher,
impl<K, S> ParallelExtend<K> for &DashSet<K, S> where
K: Send + Sync + Eq + Hash,
S: Send + Sync + Clone + BuildHasher,
sourcefn par_extend<I>(&mut self, par_iter: I) where
I: IntoParallelIterator<Item = K>,
fn par_extend<I>(&mut self, par_iter: I) where
I: IntoParallelIterator<Item = K>,
Extends an instance of the collection with the elements drawn
from the parallel iterator par_iter
. Read more
Auto Trait Implementations
impl<K, S = RandomState> !RefUnwindSafe for DashSet<K, S>
impl<K, S> Send for DashSet<K, S> where
K: Send,
S: Send,
impl<K, S> Sync for DashSet<K, S> where
K: Send + Sync,
S: Send + Sync,
impl<K, S> Unpin for DashSet<K, S> where
S: Unpin,
impl<K, S> UnwindSafe for DashSet<K, S> where
K: UnwindSafe,
S: 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<'data, I> IntoParallelRefIterator<'data> for I where
I: 'data + ?Sized,
&'data I: IntoParallelIterator,
impl<'data, I> IntoParallelRefIterator<'data> for I where
I: 'data + ?Sized,
&'data I: IntoParallelIterator,
type Iter = <&'data I as IntoParallelIterator>::Iter
type Iter = <&'data I as IntoParallelIterator>::Iter
The type of the parallel iterator that will be returned.
type Item = <&'data I as IntoParallelIterator>::Item
type Item = <&'data I as IntoParallelIterator>::Item
The type of item that the parallel iterator will produce.
This will typically be an &'data T
reference type. Read more
sourcefn par_iter(&'data self) -> <I as IntoParallelRefIterator<'data>>::Iter
fn par_iter(&'data self) -> <I as IntoParallelRefIterator<'data>>::Iter
Converts self
into a parallel iterator. Read more
impl<T> Pointable for T
impl<T> Pointable for T
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