bobcat_storage/
capabilities.rs1use core::marker::PhantomData;
2
3pub trait Cap {
4 fn write() -> bool;
5 fn read() -> bool;
6}
7
8macro_rules! capabilities {
9 ($t:ident, $cw:expr, $cr:expr) => {
10 pub struct $t;
11
12 impl Cap for $t {
13 fn write() -> bool {
14 $cw
15 }
16 fn read() -> bool {
17 $cr
18 }
19 }
20 };
21}
22
23capabilities! {CW, true, false}
24capabilities! {CA, true, true}
25capabilities! {CR, false, true}
26
27pub struct EvmBox<C: Cap, T> {
28 _phantom: PhantomData<(C, T)>,
29}