pub struct RelationInstances(/* private fields */);
Implementations§
Source§impl RelationInstances
impl RelationInstances
pub fn new() -> Self
pub fn push<E: Into<RelationInstance>>(&self, relation_instance: E)
pub fn to_vec(&self) -> Vec<RelationInstance>
pub fn get_type_ids(&self) -> RelationTypeIds
Methods from Deref<Target = DashMap<RelationInstanceId, RelationInstance>>§
pub fn par_iter_mut(&self) -> IterMut<'_, K, V>
pub fn hash_usize<T>(&self, item: &T) -> usizewhere
T: Hash,
pub fn hash_usize<T>(&self, item: &T) -> usizewhere
T: Hash,
Hash a given item to produce a usize. Uses the provided or default HashBuilder.
pub fn hasher(&self) -> &S
pub fn hasher(&self) -> &S
Returns a reference to the map’s BuildHasher
.
§Examples
use dashmap::DashMap;
use std::collections::hash_map::RandomState;
let hasher = RandomState::new();
let map: DashMap<i32, i32> = DashMap::new();
let hasher: &RandomState = map.hasher();
pub fn insert(&self, key: K, value: V) -> Option<V>
pub fn insert(&self, key: K, value: V) -> Option<V>
Inserts a key and a value into the map. Returns the old value associated with the key if there was one.
Locking behaviour: May deadlock if called when holding any sort of reference into the map.
§Examples
use dashmap::DashMap;
let map = DashMap::new();
map.insert("I am the key!", "And I am the value!");
pub fn remove<Q>(&self, key: &Q) -> Option<(K, V)>
pub fn remove<Q>(&self, key: &Q) -> Option<(K, V)>
Removes an entry from the map, returning the key and value if they existed in the map.
Locking behaviour: May deadlock if called when holding any sort of reference into the map.
§Examples
use dashmap::DashMap;
let soccer_team = DashMap::new();
soccer_team.insert("Jack", "Goalie");
assert_eq!(soccer_team.remove("Jack").unwrap().1, "Goalie");
pub fn remove_if<Q>(
&self,
key: &Q,
f: impl FnOnce(&K, &V) -> bool,
) -> Option<(K, V)>
pub fn remove_if<Q>( &self, key: &Q, f: impl FnOnce(&K, &V) -> bool, ) -> Option<(K, V)>
Removes an entry from the map, returning the key and value if the entry existed and the provided conditional function returned true.
Locking behaviour: May deadlock if called when holding any sort of reference into the map.
use dashmap::DashMap;
let soccer_team = DashMap::new();
soccer_team.insert("Sam", "Forward");
soccer_team.remove_if("Sam", |_, position| position == &"Goalie");
assert!(soccer_team.contains_key("Sam"));
use dashmap::DashMap;
let soccer_team = DashMap::new();
soccer_team.insert("Sam", "Forward");
soccer_team.remove_if("Sam", |_, position| position == &"Forward");
assert!(!soccer_team.contains_key("Sam"));
pub fn remove_if_mut<Q>( &self, key: &Q, f: impl FnOnce(&K, &mut V) -> bool, ) -> Option<(K, V)>
pub fn iter(&'a self) -> Iter<'a, K, V, S>
pub fn iter(&'a self) -> Iter<'a, K, V, S>
Creates an iterator over a DashMap yielding immutable references.
Locking behaviour: May deadlock if called when holding a mutable reference into the map.
§Examples
use dashmap::DashMap;
let words = DashMap::new();
words.insert("hello", "world");
assert_eq!(words.iter().count(), 1);
pub fn iter_mut(&'a self) -> IterMut<'a, K, V, S>
pub fn iter_mut(&'a self) -> IterMut<'a, K, V, S>
Iterator over a DashMap yielding mutable references.
Locking behaviour: May deadlock if called when holding any sort of reference into the map.
§Examples
use dashmap::DashMap;
let map = DashMap::new();
map.insert("Johnny", 21);
map.iter_mut().for_each(|mut r| *r += 1);
assert_eq!(*map.get("Johnny").unwrap(), 22);
pub fn get<Q>(&'a self, key: &Q) -> Option<Ref<'a, K, V>>
pub fn get<Q>(&'a self, key: &Q) -> Option<Ref<'a, K, V>>
Get an immutable reference to an entry in the map
Locking behaviour: May deadlock if called when holding a mutable reference into the map.
§Examples
use dashmap::DashMap;
let youtubers = DashMap::new();
youtubers.insert("Bosnian Bill", 457000);
assert_eq!(*youtubers.get("Bosnian Bill").unwrap(), 457000);
pub fn get_mut<Q>(&'a self, key: &Q) -> Option<RefMut<'a, K, V>>
pub fn get_mut<Q>(&'a self, key: &Q) -> Option<RefMut<'a, K, V>>
Get a mutable reference to an entry in the map
Locking behaviour: May deadlock if called when holding any sort of reference into the map.
§Examples
use dashmap::DashMap;
let class = DashMap::new();
class.insert("Albin", 15);
*class.get_mut("Albin").unwrap() -= 1;
assert_eq!(*class.get("Albin").unwrap(), 14);
pub fn try_get<Q>(&'a self, key: &Q) -> TryResult<Ref<'a, K, V>>
pub fn try_get<Q>(&'a self, key: &Q) -> TryResult<Ref<'a, K, V>>
Get an immutable reference to an entry in the map, if the shard is not locked. If the shard is locked, the function will return [TryResult::Locked].
§Examples
use dashmap::DashMap;
use dashmap::try_result::TryResult;
let map = DashMap::new();
map.insert("Johnny", 21);
assert_eq!(*map.try_get("Johnny").unwrap(), 21);
let _result1_locking = map.get_mut("Johnny");
let result2 = map.try_get("Johnny");
assert!(result2.is_locked());
pub fn try_get_mut<Q>(&'a self, key: &Q) -> TryResult<RefMut<'a, K, V>>
pub fn try_get_mut<Q>(&'a self, key: &Q) -> TryResult<RefMut<'a, K, V>>
Get a mutable reference to an entry in the map, if the shard is not locked. If the shard is locked, the function will return [TryResult::Locked].
§Examples
use dashmap::DashMap;
use dashmap::try_result::TryResult;
let map = DashMap::new();
map.insert("Johnny", 21);
*map.try_get_mut("Johnny").unwrap() += 1;
assert_eq!(*map.get("Johnny").unwrap(), 22);
let _result1_locking = map.get("Johnny");
let result2 = map.try_get_mut("Johnny");
assert!(result2.is_locked());
pub fn shrink_to_fit(&self)
pub fn shrink_to_fit(&self)
Remove excess capacity to reduce memory usage.
Locking behaviour: May deadlock if called when holding any sort of reference into the map.
§Examples
use dashmap::DashMap;
use dashmap::try_result::TryResult;
let map = DashMap::new();
map.insert("Johnny", 21);
assert!(map.capacity() > 0);
map.remove("Johnny");
map.shrink_to_fit();
assert_eq!(map.capacity(), 0);
pub fn retain(&self, f: impl FnMut(&K, &mut V) -> bool)
pub fn retain(&self, f: impl FnMut(&K, &mut V) -> bool)
Retain elements that whose predicates return true and discard elements whose predicates return false.
Locking behaviour: May deadlock if called when holding any sort of reference into the map.
§Examples
use dashmap::DashMap;
let people = DashMap::new();
people.insert("Albin", 15);
people.insert("Jones", 22);
people.insert("Charlie", 27);
people.retain(|_, v| *v > 20);
assert_eq!(people.len(), 2);
pub fn len(&self) -> usize
pub fn len(&self) -> usize
Fetches the total number of key-value pairs stored in the map.
Locking behaviour: May deadlock if called when holding a mutable reference into the map.
§Examples
use dashmap::DashMap;
let people = DashMap::new();
people.insert("Albin", 15);
people.insert("Jones", 22);
people.insert("Charlie", 27);
assert_eq!(people.len(), 3);
pub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Checks if the map is empty or not.
Locking behaviour: May deadlock if called when holding a mutable reference into the map.
§Examples
use dashmap::DashMap;
let map = DashMap::<(), ()>::new();
assert!(map.is_empty());
pub fn clear(&self)
pub fn clear(&self)
Removes all key-value pairs in the map.
Locking behaviour: May deadlock if called when holding any sort of reference into the map.
§Examples
use dashmap::DashMap;
let stats = DashMap::new();
stats.insert("Goals", 4);
assert!(!stats.is_empty());
stats.clear();
assert!(stats.is_empty());
pub fn capacity(&self) -> usize
pub fn capacity(&self) -> usize
Returns how many key-value pairs the map can store without reallocating.
Locking behaviour: May deadlock if called when holding a mutable reference into the map.
pub fn alter<Q>(&self, key: &Q, f: impl FnOnce(&K, V) -> V)
pub fn alter<Q>(&self, key: &Q, f: impl FnOnce(&K, V) -> V)
Modify a specific value according to a function.
Locking behaviour: May deadlock if called when holding any sort of reference into the map.
§Examples
use dashmap::DashMap;
let stats = DashMap::new();
stats.insert("Goals", 4);
stats.alter("Goals", |_, v| v * 2);
assert_eq!(*stats.get("Goals").unwrap(), 8);
§Panics
If the given closure panics, then alter
will abort the process
pub fn alter_all(&self, f: impl FnMut(&K, V) -> V)
pub fn alter_all(&self, f: impl FnMut(&K, V) -> V)
Modify every value in the map according to a function.
Locking behaviour: May deadlock if called when holding any sort of reference into the map.
§Examples
use dashmap::DashMap;
let stats = DashMap::new();
stats.insert("Wins", 4);
stats.insert("Losses", 2);
stats.alter_all(|_, v| v + 1);
assert_eq!(*stats.get("Wins").unwrap(), 5);
assert_eq!(*stats.get("Losses").unwrap(), 3);
§Panics
If the given closure panics, then alter_all
will abort the process
pub fn view<Q, R>(&self, key: &Q, f: impl FnOnce(&K, &V) -> R) -> Option<R>
pub fn view<Q, R>(&self, key: &Q, f: impl FnOnce(&K, &V) -> R) -> Option<R>
Scoped access into an item of the map according to a function.
Locking behaviour: May deadlock if called when holding any sort of reference into the map.
§Examples
use dashmap::DashMap;
let warehouse = DashMap::new();
warehouse.insert(4267, ("Banana", 100));
warehouse.insert(2359, ("Pear", 120));
let fruit = warehouse.view(&4267, |_k, v| *v);
assert_eq!(fruit, Some(("Banana", 100)));
§Panics
If the given closure panics, then view
will abort the process
pub fn contains_key<Q>(&self, key: &Q) -> bool
pub fn contains_key<Q>(&self, key: &Q) -> bool
Checks if the map contains a specific key.
Locking behaviour: May deadlock if called when holding a mutable reference into the map.
§Examples
use dashmap::DashMap;
let team_sizes = DashMap::new();
team_sizes.insert("Dakota Cherries", 23);
assert!(team_sizes.contains_key("Dakota Cherries"));
pub fn entry(&'a self, key: K) -> Entry<'a, K, V>
pub fn entry(&'a self, key: K) -> Entry<'a, K, V>
Advanced entry API that tries to mimic std::collections::HashMap
.
See the documentation on dashmap::mapref::entry
for more details.
Locking behaviour: May deadlock if called when holding any sort of reference into the map.
pub fn try_entry(&'a self, key: K) -> Option<Entry<'a, K, V>>
pub fn try_entry(&'a self, key: K) -> Option<Entry<'a, K, V>>
Advanced entry API that tries to mimic std::collections::HashMap
.
See the documentation on dashmap::mapref::entry
for more details.
Returns None if the shard is currently locked.
pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>
pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>
Advanced entry API that tries to mimic std::collections::HashMap::try_reserve
.
Tries to reserve capacity for at least shard * additional
and may reserve more space to avoid frequent reallocations.
§Errors
If the capacity overflows, or the allocator reports a failure, then an error is returned.
Trait Implementations§
Source§impl Clone for RelationInstances
impl Clone for RelationInstances
Source§fn clone(&self) -> RelationInstances
fn clone(&self) -> RelationInstances
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for RelationInstances
impl Debug for RelationInstances
Source§impl Default for RelationInstances
impl Default for RelationInstances
Source§fn default() -> RelationInstances
fn default() -> RelationInstances
Source§impl Deref for RelationInstances
impl Deref for RelationInstances
Source§type Target = DashMap<RelationInstanceId, RelationInstance>
type Target = DashMap<RelationInstanceId, RelationInstance>
Source§impl DerefMut for RelationInstances
impl DerefMut for RelationInstances
Source§impl<'de> Deserialize<'de> for RelationInstances
impl<'de> Deserialize<'de> for RelationInstances
Source§fn 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>,
Source§impl From<&DashMap<RelationInstanceId, RelationInstance>> for RelationInstances
impl From<&DashMap<RelationInstanceId, RelationInstance>> for RelationInstances
Source§fn from(
relation_instances: &DashMap<RelationInstanceId, RelationInstance>,
) -> Self
fn from( relation_instances: &DashMap<RelationInstanceId, RelationInstance>, ) -> Self
Source§impl From<&RelationInstances> for Vec<RelationInstance>
impl From<&RelationInstances> for Vec<RelationInstance>
Source§fn from(relation_instances: &RelationInstances) -> Self
fn from(relation_instances: &RelationInstances) -> Self
Source§impl From<DashMap<RelationInstanceId, RelationInstance>> for RelationInstances
impl From<DashMap<RelationInstanceId, RelationInstance>> for RelationInstances
Source§fn from(
relation_instances: DashMap<RelationInstanceId, RelationInstance>,
) -> Self
fn from( relation_instances: DashMap<RelationInstanceId, RelationInstance>, ) -> Self
Source§impl From<RelationInstances> for DashMap<RelationInstanceId, RelationInstance>
impl From<RelationInstances> for DashMap<RelationInstanceId, RelationInstance>
Source§fn from(relation_instances: RelationInstances) -> Self
fn from(relation_instances: RelationInstances) -> Self
Source§impl From<RelationInstances> for Vec<RelationInstance>
impl From<RelationInstances> for Vec<RelationInstance>
Source§fn from(relation_instances: RelationInstances) -> Self
fn from(relation_instances: RelationInstances) -> Self
Source§impl From<Vec<RelationInstance>> for RelationInstances
impl From<Vec<RelationInstance>> for RelationInstances
Source§fn from(relation_instances: Vec<RelationInstance>) -> Self
fn from(relation_instances: Vec<RelationInstance>) -> Self
Source§impl FromIterator<RelationInstance> for RelationInstances
impl FromIterator<RelationInstance> for RelationInstances
Source§fn from_iter<I: IntoIterator<Item = RelationInstance>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = RelationInstance>>(iter: I) -> Self
Source§impl Hash for RelationInstances
impl Hash for RelationInstances
Source§impl IntoIterator for RelationInstances
impl IntoIterator for RelationInstances
Source§type Item = (RelationInstanceId, RelationInstance)
type Item = (RelationInstanceId, RelationInstance)
Source§type IntoIter = OwningIter<RelationInstanceId, RelationInstance>
type IntoIter = OwningIter<RelationInstanceId, RelationInstance>
Source§impl JsonSchema for RelationInstances
impl JsonSchema for RelationInstances
Source§fn json_schema(schema_generator: &mut SchemaGenerator) -> Schema
fn json_schema(schema_generator: &mut SchemaGenerator) -> Schema
§fn always_inline_schema() -> bool
fn always_inline_schema() -> bool
inline_schema()
insteadinline_schema()
instead“. Read more§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref
keyword. Read moreSource§impl PartialEq for RelationInstances
impl PartialEq for RelationInstances
Source§impl Serialize for RelationInstances
impl Serialize for RelationInstances
impl Eq for RelationInstances
Auto Trait Implementations§
impl Freeze for RelationInstances
impl !RefUnwindSafe for RelationInstances
impl Send for RelationInstances
impl Sync for RelationInstances
impl Unpin for RelationInstances
impl UnwindSafe for RelationInstances
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,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
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 more