Skip to main content

DashTable

Struct DashTable 

Source
pub struct DashTable<T> { /* private fields */ }
Expand description

A concurrent raw hash table with items of type T.

Implementations§

Source§

impl<T> DashTable<T>

Source

pub fn new() -> Self

Creates a new concurrent raw hash table.

Source

pub fn with_capacity(capacity: usize) -> Self

Creates a new concurrent raw hash table, pre-allocating capacity for approximately the given number of items

Source

pub fn entry<'a>( &'a self, hash: u64, eq: impl FnMut(&T) -> bool, hasher: impl Fn(&T) -> u64, ) -> Entry<'a, T>

Retrieves an entry for the given hash value.

See also:

  • entry_mut(), which is more efficient if you hold a mutable reference to this DashTable, as it avoids acquiring locks,
  • find(), which is more efficient if you don’t need to modify the entry, as it only acquires a read lock.
Source

pub fn entry_mut<'a>( &'a mut self, hash: u64, eq: impl FnMut(&T) -> bool, hasher: impl Fn(&T) -> u64, ) -> MutEntry<'a, T>

Retrieves an entry for the given hash value.

Contrary to entry(), no lock is held internally because this function already takes an exclusive mutable reference to this DashTable.

Source

pub fn find<'a>( &'a self, hash: u64, eq: impl FnMut(&T) -> bool, ) -> Option<Ref<'a, T>>

Returns a reference to a value if one matches the given hash.

This is more efficient than using entry() as this only uses a read lock.

Source

pub fn insert_unique<'a>( &'a self, hash: u64, value: T, hasher: impl Fn(&T) -> u64, ) -> OccupiedEntry<'a, T>

Unconditionally inserts the given value for the given hash, without checking whether an equivalent element already exists in the table.

See also insert_unique_mut, which is more efficient if you hold a mutable reference to this DashTable as it avoids acquiring locks.

Source

pub fn insert_unique_mut<'a>( &'a mut self, hash: u64, value: T, hasher: impl Fn(&T) -> u64, ) -> MutOccupiedEntry<'a, T>

Unconditionally inserts the given value for the given hash, without checking whether an equivalent element already exists in the table.

Contrary to insert_unique(), no lock is held internally because this function already takes an exclusive mutable reference to this DashTable.

Trait Implementations§

Source§

impl<T> Default for DashTable<T>

Source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<T> Freeze for DashTable<T>

§

impl<T> !RefUnwindSafe for DashTable<T>

§

impl<T> Send for DashTable<T>
where T: Send,

§

impl<T> Sync for DashTable<T>
where T: Send + Sync,

§

impl<T> Unpin for DashTable<T>

§

impl<T> UnsafeUnpin for DashTable<T>

§

impl<T> UnwindSafe for DashTable<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where 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 T
where 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<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

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

Source§

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.