Permeable is a permission-demand trait. It helps to decouple the permission-demander from the permission / auth provider.
```rust use permeable::{Permeable, PermissionError};
enum Permission { RoThis, RwThis, AccessThat, }
struct User { name: String }
// A naive implementation of a the Permeable-Trait.
impl Permeable for User {
type Perm = Permission;
fn hasperm(&self, permission: impl Into
use Permission::*;
fn main() { let admin = User { name: String::from("admin") }; asserteq!(admin.hasperm(RwThis), Ok(())); let peter = User { name: String::from("peter") }; asserteq!(peter.hasperm(AccessThat), Ok(())); asserteq!(peter.hasperm(RwThis).is_err(), true); } ```