Trait arc_swap::AsRaw

source ·
pub trait AsRaw<T>: Sealed {
    // Required method
    fn as_raw(&self) -> *mut T;
}
Expand description

A trait describing things that can be turned into a raw pointer.

This is just an abstraction of things that can be passed to the compare_and_swap.

Examples

use std::ptr;
use std::sync::Arc;

use arc_swap::ArcSwapOption;

let a = Arc::new(42);
let shared = ArcSwapOption::from(Some(Arc::clone(&a)));

shared.compare_and_swap(&a, Some(Arc::clone(&a)));
shared.compare_and_swap(&None::<Arc<_>>, Some(Arc::clone(&a)));
shared.compare_and_swap(shared.load(), Some(Arc::clone(&a)));
shared.compare_and_swap(&shared.load(), Some(Arc::clone(&a)));
shared.compare_and_swap(ptr::null(), Some(Arc::clone(&a)));

Due to technical limitation, this is not implemented for owned Arc/Option<Arc<_>>, they need to be borrowed.

Required Methods§

source

fn as_raw(&self) -> *mut T

Converts the value into a raw pointer.

Implementations on Foreign Types§

source§

impl<T> AsRaw<T> for *const T

source§

fn as_raw(&self) -> *mut T

source§

impl<'a, T: RefCnt> AsRaw<<T as RefCnt>::Base> for &'a T

source§

fn as_raw(&self) -> *mut T::Base

source§

impl<T> AsRaw<T> for *mut T

source§

fn as_raw(&self) -> *mut T

Implementors§

source§

impl<'a, T: RefCnt> AsRaw<<T as RefCnt>::Base> for &'a Guard<T>

source§

impl<T: RefCnt> AsRaw<<T as RefCnt>::Base> for Guard<T>