Struct scc::Accessor[][src]

pub struct Accessor<'a, K: Eq + Hash + Sync, V: Sync, H: BuildHasher> { /* fields omitted */ }

Accessor owns a key-value pair in the HashMap.

It is !Send, thus disallowing other threads to have references to it. It acquires an exclusive lock on the cell managing the key. A thread having multiple Accessor of Cursor instances poses a possibility of deadlock.

Implementations

impl<'a, K: Eq + Hash + Sync, V: Sync, H: BuildHasher> Accessor<'a, K, V, H>[src]

pub fn get(&'a self) -> (&'a K, &'a mut V)[src]

Returns a reference to the key-value pair.

Examples

use scc::HashMap;

let hashmap: HashMap<u64, u32, _> = Default::default();

let result = hashmap.get(&1);
assert!(result.is_none());

let result = hashmap.insert(1, 0);
if let Ok(result) = result {
    assert_eq!(result.get(), (&1, &mut 0));
    (*result.get().1) = 2;
}

let result = hashmap.get(&1);
assert_eq!(result.unwrap().get(), (&1, &mut 2));

pub fn erase(self) -> Option<V>[src]

Erases the key-value pair owned by the Accessor.

Examples

use scc::HashMap;

let hashmap: HashMap<u64, u32, _> = Default::default();

let result = hashmap.insert(1, 0);
if let Ok(result) = result {
    assert_eq!(result.get(), (&1, &mut 0));
    let result = result.erase();
    assert_eq!(result.unwrap(), 0);
}

let result = hashmap.get(&1);
assert!(result.is_none());

Auto Trait Implementations

impl<'a, K, V, H> RefUnwindSafe for Accessor<'a, K, V, H> where
    H: RefUnwindSafe,
    K: RefUnwindSafe,
    V: RefUnwindSafe
[src]

impl<'a, K, V, H> !Send for Accessor<'a, K, V, H>[src]

impl<'a, K, V, H> !Sync for Accessor<'a, K, V, H>[src]

impl<'a, K, V, H> Unpin for Accessor<'a, K, V, H>[src]

impl<'a, K, V, H> UnwindSafe for Accessor<'a, K, V, H> where
    H: RefUnwindSafe,
    K: RefUnwindSafe,
    V: RefUnwindSafe
[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pointable for T[src]

type Init = T

The type for initializers.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.