urcu2 0.1.3

Safe API to liburcu
Documentation
use std::marker::PhantomData;

#[allow(dead_code)]
pub struct UnSend<T>(*const T);
unsafe impl<T> Sync for UnSend<T> {}

#[allow(dead_code)]
pub struct UnSync<T>(*const T);
unsafe impl<T> Send for UnSync<T> {}

pub type PhantomUnsync<T = ()> = PhantomData<UnSync<T>>;

pub type PhantomUnsend<T = ()> = PhantomData<UnSend<T>>;

#[allow(dead_code)]
pub mod asserts {
    use super::*;

    pub type NotSendNotSync = (UnSend<()>, UnSync<()>);
    pub type SendButNotSync = ((), UnSync<()>);
    pub type NotSendButSync = (UnSend<()>, ());
    pub type SendAndSync = ((), ());
}