radix_engine_interface/object_modules/metadata/
roles.rs

1pub use sbor::rust::vec;
2pub use sbor::rust::vec::Vec;
3
4pub const METADATA_SETTER_ROLE: &str = "metadata_setter";
5pub const METADATA_SETTER_UPDATER_ROLE: &str = "metadata_setter_updater";
6
7pub const METADATA_LOCKER_ROLE: &str = "metadata_locker";
8pub const METADATA_LOCKER_UPDATER_ROLE: &str = "metadata_locker_updater";
9
10pub struct MetadataRoles<T> {
11    pub metadata_setter: T,
12    pub metadata_setter_updater: T,
13    pub metadata_locker: T,
14    pub metadata_locker_updater: T,
15}
16
17impl<T> MetadataRoles<T> {
18    pub fn list(self) -> Vec<(&'static str, T)> {
19        vec![
20            (METADATA_SETTER_ROLE, self.metadata_setter),
21            (METADATA_SETTER_UPDATER_ROLE, self.metadata_setter_updater),
22            (METADATA_LOCKER_ROLE, self.metadata_locker),
23            (METADATA_LOCKER_UPDATER_ROLE, self.metadata_locker_updater),
24        ]
25    }
26}
27
28#[macro_export]
29macro_rules! metadata_roles {
30    {$($role:ident => $rule:expr;)*} => ({
31        internal_roles!(MetadataRoles, $($role => $rule;)*)
32    });
33}