use std::marker::PhantomData;
pub trait AccessIdentifier: private::Sealed {}
pub trait MutableAccessIdentifier: AccessIdentifier {}
pub trait ImmutableAccessIdentifier: AccessIdentifier {}
#[derive(Debug, Ord, PartialOrd, Eq, PartialEq)]
pub struct Owned {}
#[derive(Debug, Ord, PartialOrd, Eq, PartialEq)]
pub struct BorrowMutable<'a>(PhantomData<&'a ()>);
#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq)]
pub struct BorrowImmutable<'a>(PhantomData<&'a ()>);
impl AccessIdentifier for Owned {}
impl AccessIdentifier for BorrowMutable<'_> {}
impl AccessIdentifier for BorrowImmutable<'_> {}
impl MutableAccessIdentifier for Owned {}
impl MutableAccessIdentifier for BorrowMutable<'_> {}
impl ImmutableAccessIdentifier for Owned {}
impl ImmutableAccessIdentifier for BorrowMutable<'_> {}
impl ImmutableAccessIdentifier for BorrowImmutable<'_> {}
mod private {
pub trait Sealed {}
impl Sealed for super::Owned {}
impl Sealed for super::BorrowMutable<'_> {}
impl Sealed for super::BorrowImmutable<'_> {}
}