[−][src]Struct peril::HazardValue
encapsulates a boxed Value or a Dummy (like null)
Examples
use peril::HazardValue; // creating a boxed string value let boxed = HazardValue::boxed("test"); // creating a dummy nullptr let dummy = HazardValue::<usize>::dummy(0);
Implementations
impl<'registry, T: Send> HazardValue<'registry, T>
[src]
pub fn boxed(value: T) -> HazardValue<'registry, T>
[src]
impl<'registry, T: Send + ?Sized> HazardValue<'registry, T>
[src]
pub fn dummy(value: usize) -> HazardValue<'registry, T>
[src]
create a Dummy HazardValue (like null)
Arguments
value
- the dummy pointer value (usually used for null values)
Examples
use peril::HazardValue; // creating a dummy nullptr let dummy = HazardValue::<usize>::dummy(0);
pub fn as_ref(&self) -> Option<&T>
[src]
read the data from a Boxed HazardValue and will return None if the value is a dummy
Examples
use peril::HazardValue; // creating a boxed string value let boxed = HazardValue::boxed("test"); assert!(boxed.as_ref().unwrap() == &"test");
pub fn is_boxed(&self) -> bool
[src]
check if a value is a Boxed HazardValue
Examples
use peril::HazardValue; // creating a boxed string value let boxed = HazardValue::boxed("test"); assert!(boxed.is_boxed());
pub fn is_dummy(&self) -> bool
[src]
check if a value is a Dummy HazardValue
Examples
use peril::HazardValue; // creating a dummy value let dummy = HazardValue::<usize>::dummy(0); assert!(dummy.is_dummy());
pub fn as_dummy(&self) -> Option<usize>
[src]
get the (pointer) dummy value of HazardValue or return None if the value is not a dummy
Examples
use peril::HazardValue; // creating a dummy value let dummy = HazardValue::<usize>::dummy(1337); assert!(dummy.as_dummy().unwrap() == 1337);
pub fn clone_inner(self) -> Option<T> where
T: Clone,
[src]
T: Clone,
clones the data from a Boxed HazardValue if T: Clone or return None if the value is a dummy
Examples
use peril::HazardValue; // creating a boxed value let mut boxed = HazardValue::boxed(1); let taken = boxed.clone_inner().unwrap(); assert!(taken == 1);
Trait Implementations
impl<'registry, T: Send + ?Sized> Clone for HazardValue<'registry, T>
[src]
pub fn clone(&self) -> Self
[src]
clones the HazardValue itself
Examples
use peril::{HazardRegistry, HazardValue, HazardRecord, HazardPointer, Ordering}; // creating a boxed value let boxed = HazardValue::boxed(1); let clone = boxed.clone(); let registry = HazardRegistry::default(); let hp = HazardPointer::new(boxed); let ok = hp.compare_exchange(®istry, clone, HazardValue::dummy(0), Ordering::Relaxed, Ordering::Relaxed).is_ok(); assert!(ok);
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
Auto Trait Implementations
impl<'registry, T: ?Sized> RefUnwindSafe for HazardValue<'registry, T> where
T: RefUnwindSafe,
[src]
T: RefUnwindSafe,
impl<'registry, T> !Send for HazardValue<'registry, T>
[src]
impl<'registry, T> !Sync for HazardValue<'registry, T>
[src]
impl<'registry, T: ?Sized> Unpin for HazardValue<'registry, T>
[src]
impl<'registry, T: ?Sized> UnwindSafe for HazardValue<'registry, T> where
T: RefUnwindSafe,
[src]
T: 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> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[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>,