1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
pub use sanitizeable_derive::sanitizeable;

pub trait Sanitizeable: Sized {
    type Public;
    type Private;

    fn from_private(private: Self::Private) -> Self;

    fn public(&self) -> &Self::Public;
    fn public_mut(&mut self) -> &mut Self::Public;

    fn private(&self) -> &Self::Private;
    fn private_mut(&mut self) -> &mut Self::Private;

    fn into_private(self) -> Self::Private;
}