use crate::sealed::Sealed;

pub trait PerfectCast<T>: Sealed {
    fn cast(self) -> T;
}

pub trait WrappingCast<T>: Sealed {
    fn cast(self) -> T;
}

pub trait RoundTowardZeroCast<T>: Sealed {
    fn cast(self) -> T;
}

pub trait RoundTiesEvenCast<T>: Sealed {
    fn cast(self) -> T;
}

pub trait ToBit<T>: Sealed {
    fn to(self) -> T;
}

pub trait ToCodepoint<T>: Sealed {
    fn to(self) -> T;
}

pub trait ToCodepointWrapping<T>: Sealed {
    fn to(self) -> T;
}