Struct scc::Accessor [−][src]
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 or Cursor instances poses a possibility of deadlock.
Implementations
impl<'h, K, V, H> Accessor<'h, K, V, H> where
K: Eq + Hash + Sync,
V: Sync,
H: BuildHasher,
[src]
K: Eq + Hash + Sync,
V: Sync,
H: BuildHasher,
pub fn get(&'h self) -> (&'h K, &'h 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<'h, K, V, H> RefUnwindSafe for Accessor<'h, K, V, H> where
H: RefUnwindSafe,
K: RefUnwindSafe,
V: RefUnwindSafe,
H: RefUnwindSafe,
K: RefUnwindSafe,
V: RefUnwindSafe,
impl<'h, K, V, H> !Send for Accessor<'h, K, V, H>
impl<'h, K, V, H> !Sync for Accessor<'h, K, V, H>
impl<'h, K, V, H> Unpin for Accessor<'h, K, V, H>
impl<'h, K, V, H> UnwindSafe for Accessor<'h, 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>,