Struct dashmap::DashSet

source ·
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§

source§

impl<'a, K: 'a + Eq + Hash> DashSet<K, RandomState>

source

pub fn new() -> Self

Creates a new DashSet with a capacity of 0.

Examples
use dashmap::DashSet;

let games = DashSet::new();
games.insert("Veloren");
source

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);
source§

impl<'a, K: 'a + Eq + Hash, S: BuildHasher + Clone> DashSet<K, S>

source

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");
source

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);
source

pub fn hash_usize<T: Hash>(&self, item: &T) -> usize

Hash a given item to produce a usize. Uses the provided or default HashBuilder.

source

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());
source

pub fn determine_map<Q>(&self, key: &Q) -> usizewhere 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"));
source

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));
source

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!");
source

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");
source

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"));
source

pub fn iter(&'a self) -> Iter<'a, K, S, DashMap<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);
source

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");
source

pub fn shrink_to_fit(&self)

Remove excess capacity to reduce memory usage.

source

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);
source

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);
source

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());
source

pub fn clear(&self)

Removes all keys in the set.

Examples
use dashmap::DashSet;

let people = DashSet::new();
people.insert("Albin");
assert!(!people.is_empty());
people.clear();
assert!(people.is_empty());
source

pub fn capacity(&self) -> usize

Returns how many keys the set can store without reallocating.

source

pub fn contains<Q>(&self, key: &Q) -> boolwhere K: Borrow<Q>, Q: Hash + Eq + ?Sized,

Checks if the set contains a specific key.

Examples
use dashmap::DashSet;

let people = DashSet::new();
people.insert("Dakota Cherries");
assert!(people.contains("Dakota Cherries"));

Trait Implementations§

source§

impl<K: Eq + Hash + Clone, S: Clone> Clone for DashSet<K, S>

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
source§

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

Performs copy-assignment from source. Read more
source§

impl<K: Eq + Hash + Debug, S: BuildHasher + Clone> Debug for DashSet<K, S>

source§

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

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

impl<K, S> Default for DashSet<K, S>where K: Eq + Hash, S: Default + BuildHasher + Clone,

source§

fn default() -> Self

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

impl<'de, K, S> Deserialize<'de> for DashSet<K, S>where K: Deserialize<'de> + Eq + Hash, S: BuildHasher + Clone + Default,

source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<K: Eq + Hash, S: BuildHasher + Clone> Extend<K> for DashSet<K, S>

source§

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

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<K: Eq + Hash, S: BuildHasher + Clone + Default> FromIterator<K> for DashSet<K, S>

source§

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

Creates a value from an iterator. Read more
source§

impl<K, S> FromParallelIterator<K> for DashSet<K, S>where K: Send + Sync + Eq + Hash, S: Send + Sync + Clone + Default + BuildHasher,

source§

fn from_par_iter<I>(par_iter: I) -> Selfwhere I: IntoParallelIterator<Item = K>,

Creates an instance of the collection from the parallel iterator par_iter. Read more
source§

impl<K: Eq + Hash, S: BuildHasher + Clone> IntoIterator for DashSet<K, S>

§

type Item = K

The type of the elements being iterated over.
§

type IntoIter = OwningIter<K, S>

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<'a, K, S> IntoParallelIterator for &'a DashSet<K, S>where K: Send + Sync + Eq + Hash, S: Send + Sync + Clone + BuildHasher,

§

type Iter = Iter<'a, K, S>

The parallel iterator type that will be created.
§

type Item = RefMulti<'a, K, S>

The type of item that the parallel iterator will produce.
source§

fn into_par_iter(self) -> Self::Iter

Converts self into a parallel iterator. Read more
source§

impl<K, S> IntoParallelIterator for DashSet<K, S>where K: Send + Eq + Hash, S: Send + Clone + BuildHasher,

§

type Iter = OwningIter<K, S>

The parallel iterator type that will be created.
§

type Item = K

The type of item that the parallel iterator will produce.
source§

fn into_par_iter(self) -> Self::Iter

Converts self into a parallel iterator. Read more
source§

impl<K, S> ParallelExtend<K> for &DashSet<K, S>where K: Send + Sync + Eq + Hash, S: Send + Sync + Clone + BuildHasher,

source§

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
source§

impl<K, S> ParallelExtend<K> for DashSet<K, S>where K: Send + Sync + Eq + Hash, S: Send + Sync + Clone + BuildHasher,

source§

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
source§

impl<K, H> Serialize for DashSet<K, H>where K: Serialize + Eq + Hash, H: BuildHasher + Clone,

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>where S: Serializer,

Serialize this value into the given Serde serializer. 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§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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 Twhere 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<'data, I> IntoParallelRefIterator<'data> for Iwhere I: 'data + ?Sized, &'data I: IntoParallelIterator,

§

type Iter = <&'data I as IntoParallelIterator>::Iter

The type of the parallel iterator that will be returned.
§

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.
source§

fn par_iter(&'data self) -> <I as IntoParallelRefIterator<'data>>::Iter

Converts self into a parallel iterator. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> ToOwned for Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.
source§

impl<T> DeserializeOwned for Twhere T: for<'de> Deserialize<'de>,