use crate::never::Never; pub trait Bool: Sized + sealed_bool::Sealed + 'static {} mod sealed_bool { use super::*; pub trait Sealed {} impl Sealed for Yes {} impl Sealed for No {} } pub enum Yes {} pub enum No {} impl Bool for Yes {} impl Bool for No {} pub unsafe trait IsSend {} pub unsafe trait IsSync {} pub struct DynamicShim(pub T); unsafe impl> Send for DynamicShim {} unsafe impl> Sync for DynamicShim {} pub struct Dynamic(pub T); unsafe impl IsSend for Dynamic {} unsafe impl IsSend for Dynamic {} unsafe impl IsSync for Dynamic {} unsafe impl IsSync for Dynamic {} pub struct SendAndSync(pub T); unsafe impl IsSend for SendAndSync {} unsafe impl IsSync for SendAndSync {} unsafe impl IsSend for Never {} unsafe impl IsSync for Never {} unsafe impl IsSend for () {} unsafe impl IsSync for () {}