Skip to main content

bobcat_storage/
capabilities.rs

1use 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}