[−][src]Struct scc::Accessor
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. Instantiating multiple Accessor of Scanner instances in a thread 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; use std::collections::hash_map::RandomState; let hashmap: HashMap<u64, u32, RandomState> = HashMap::new(0, RandomState::new()); 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; use std::collections::hash_map::RandomState; let hashmap: HashMap<u64, u32, RandomState> = HashMap::new(0, RandomState::new()); 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,
H: RefUnwindSafe,
K: RefUnwindSafe,
V: RefUnwindSafe,
impl<'a, K, V, H> !Send for Accessor<'a, K, V, H>
impl<'a, K, V, H> !Sync for Accessor<'a, K, V, H>
impl<'a, K, V, H> Unpin for Accessor<'a, K, V, H>
impl<'a, K, V, H> UnwindSafe for Accessor<'a, K, V, H> where
H: RefUnwindSafe,
K: RefUnwindSafe,
V: RefUnwindSafe,
H: RefUnwindSafe,
K: RefUnwindSafe,
V: RefUnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Pointable for T
[src]
pub const ALIGN: usize
[src]
type Init = T
The type for initializers.
pub unsafe fn init(init: <T as Pointable>::Init) -> usize
[src]
pub unsafe fn deref<'a>(ptr: usize) -> &'a T
[src]
pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
[src]
pub unsafe fn drop(ptr: usize)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,