#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default)]
pub struct Unique(std::marker::PhantomData<*const ()>);
unsafe impl Send for Unique {}
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default)]
pub struct Shared;
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default)]
pub struct ThreadLocal(std::marker::PhantomData<*const ()>);
pub trait Ownership: private::Sealed {}
pub trait LocalThreadOwnership: Ownership {}
pub trait NonUniqueOwnership: Ownership {}
impl Ownership for Unique {}
impl LocalThreadOwnership for Unique {}
impl private::Sealed for Unique {}
impl Ownership for Shared {}
impl NonUniqueOwnership for Shared {}
impl private::Sealed for Shared {}
impl Ownership for ThreadLocal {}
impl LocalThreadOwnership for ThreadLocal {}
impl NonUniqueOwnership for ThreadLocal {}
impl private::Sealed for ThreadLocal {}
mod private {
pub trait Sealed {}
}