#[allow(private_bounds)]
pub trait Access: Sealed + Copy {}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub struct RW;
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub struct R;
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub struct W;
impl Access for R {}
impl Access for W {}
impl Access for RW {}
trait Sealed {}
impl Sealed for R {}
impl Sealed for W {}
impl Sealed for RW {}
pub trait Read: Access {}
impl Read for RW {}
impl Read for R {}
pub trait Write: Access {}
impl Write for RW {}
impl Write for W {}