use crate::sealed::Sealed;
pub trait Permission: Sealed {}
pub trait Readable: Permission {}
pub trait Writable: Permission {}
pub enum ReadOnly {}
impl Permission for ReadOnly {}
impl Readable for ReadOnly {}
impl Sealed for ReadOnly {}
impl<P: Readable> Compatible<ReadOnly, P> for ReadOnly {
type Output = ReadOnly;
}
pub enum WriteOnly {}
impl Permission for WriteOnly {}
impl Writable for WriteOnly {}
impl Sealed for WriteOnly {}
impl<P: Writable> Compatible<WriteOnly, P> for WriteOnly {
type Output = WriteOnly;
}
pub enum ReadWrite {}
impl Permission for ReadWrite {}
impl Readable for ReadWrite {}
impl Writable for ReadWrite {}
impl Sealed for ReadWrite {}
impl<P: Permission> Compatible<ReadWrite, P> for ReadWrite {
type Output = P;
}
pub trait Compatible<P1, P2>: Sealed {
type Output: Permission;
}