use bitflags::bitflags;
bitflags! {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Permissions: u32 {
const READ = 1 << 0;
const WRITE = 1 << 1;
const MODIFY = 1 << 2;
}
}
impl Permissions {
pub const ADMIN: Self = Self::READ
.union(Self::WRITE)
.union(Self::MODIFY);
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn admin_is_read_write_modify() {
assert!(Permissions::ADMIN.contains(Permissions::READ));
assert!(Permissions::ADMIN.contains(Permissions::WRITE));
assert!(Permissions::ADMIN.contains(Permissions::MODIFY));
assert_eq!(
Permissions::ADMIN,
Permissions::READ | Permissions::WRITE | Permissions::MODIFY
);
}
#[test]
fn empty_grants_nothing() {
let p = Permissions::empty();
assert!(!p.contains(Permissions::READ));
assert!(!p.contains(Permissions::WRITE));
assert!(!p.contains(Permissions::MODIFY));
}
}