radix_engine_interface/object_modules/metadata/
roles.rs1pub 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}