Crates.io | cap_access |
lib.rs | cap_access |
version | 0.1.0 |
source | src |
created_at | 2024-07-17 09:25:22.298921 |
updated_at | 2024-07-17 09:25:22.298921 |
description | Provide basic capability-based access control to objects |
homepage | https://github.com/arceos-org/arceos |
repository | https://github.com/arceos-org/cap_access |
max_upload_size | |
id | 1306040 |
size | 7,515 |
Provide basic capability-based access control to objects.
The wrapper type WithCap
associates a capability to an object, that
is a set of access rights. When accessing the object, we must explicitly
specify the access capability, and it must not violate the capability
associated with the object at initialization.
use cap_access::{Cap, WithCap};
let data = WithCap::new(42, Cap::READ | Cap::WRITE);
// Access with the correct capability.
assert_eq!(data.access(Cap::READ).unwrap(), &42);
assert_eq!(data.access(Cap::WRITE).unwrap(), &42);
assert_eq!(data.access(Cap::READ | Cap::WRITE).unwrap(), &42);
// Access with the incorrect capability.
assert!(data.access(Cap::EXECUTE).is_none());
assert!(data.access(Cap::READ | Cap::EXECUTE).is_none());