Skip to main content

HashMap

Struct HashMap 

Source
pub struct HashMap<K, V, S = RandomState>(/* private fields */)
where
    K: Hash + Eq,
    V: Clone,
    S: BuildHasher + Default;
Expand description

A concurrent hashmap wrapper around papaya’s HashMap.

This wrapper uses pin() internally rather than pin_owned() to avoid performance issues. All operations clone values on access, which is suitable for types that implement Clone.

§Type Parameters

  • K - The key type, must implement Hash and Eq
  • V - The value type, must implement Clone
  • S - The hasher type, defaults to RandomState

Implementations§

Source§

impl<K, V, S> HashMap<K, V, S>
where K: Hash + Eq, V: Clone, S: BuildHasher + Default,

Source

pub fn new() -> Self

Creates a new empty HashMap.

Source

pub fn insert(&self, key: K, value: V)

Inserts a key-value pair into the map.

If the map already contains this key, the value is updated.

Source

pub fn get<Q>(&self, key: &Q) -> Option<V>
where Q: Equivalent<K> + Hash + ?Sized,

Returns a clone of the value corresponding to the key.

Returns None if the key is not present in the map.

Source

pub fn contains_key<Q>(&self, key: &Q) -> bool
where Q: Equivalent<K> + Hash + ?Sized,

Returns true if the map contains a value for the specified key.

Source

pub fn values(&self) -> Vec<V>

Returns a vector containing clones of all values in the map.

Source

pub fn to_vec(&self) -> Vec<(K, V)>
where K: Clone,

Returns a vector containing clones of all key-value pairs in the map.

Source

pub fn remove<Q>(&self, key: &Q)
where Q: Equivalent<K> + Hash + ?Sized,

Removes a key from the map.

Traditionally remove would return the value but this would require cloning the value, which would be an unnecessary expense when you don’t need the value. If you need the value, use take instead.

Source

pub fn take<Q>(&self, key: &Q) -> Option<V>
where Q: Equivalent<K> + Hash + ?Sized,

Removes a key from the map and returns the value.

Source

pub fn clear(&self)

Removes all key-value pairs from the map.

Source

pub fn len(&self) -> usize

Returns the number of elements in the map.

Source

pub fn is_empty(&self) -> bool

Returns true if the map contains no elements.

Source

pub fn retain<F>(&self, f: F)
where F: FnMut(&K, &V) -> bool,

Retains only the elements specified by the predicate.

In other words, removes all pairs (k, v) such that f(&k, &v) returns false.

Trait Implementations§

Source§

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

Source§

fn clone(&self) -> HashMap<K, V, S>

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<K, V, S> Debug for HashMap<K, V, S>
where K: Hash + Eq + Debug, V: Clone + Debug, S: BuildHasher + Default + Debug,

Source§

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

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

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

Source§

fn default() -> HashMap<K, V, S>

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

Auto Trait Implementations§

§

impl<K, V, S = RandomState> !Freeze for HashMap<K, V, S>

§

impl<K, V, S> RefUnwindSafe for HashMap<K, V, S>
where S: RefUnwindSafe,

§

impl<K, V, S> Send for HashMap<K, V, S>
where K: Send, V: Send, S: Send,

§

impl<K, V, S> Sync for HashMap<K, V, S>
where K: Send + Sync, V: Send + Sync, S: Sync,

§

impl<K, V, S> Unpin for HashMap<K, V, S>
where S: Unpin,

§

impl<K, V, S> UnsafeUnpin for HashMap<K, V, S>
where S: UnsafeUnpin,

§

impl<K, V, S = RandomState> !UnwindSafe for HashMap<K, V, S>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> ToOwned for T
where T: Clone,

Source§

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

Source§

fn is_within(&self, b: &G2) -> bool