radix-engine-interface 1.3.1

The interface between system layer and VM layer, from the Radix DLT project.
Documentation
pub use sbor::rust::vec;
pub use sbor::rust::vec::Vec;

pub const METADATA_SETTER_ROLE: &str = "metadata_setter";
pub const METADATA_SETTER_UPDATER_ROLE: &str = "metadata_setter_updater";

pub const METADATA_LOCKER_ROLE: &str = "metadata_locker";
pub const METADATA_LOCKER_UPDATER_ROLE: &str = "metadata_locker_updater";

pub struct MetadataRoles<T> {
    pub metadata_setter: T,
    pub metadata_setter_updater: T,
    pub metadata_locker: T,
    pub metadata_locker_updater: T,
}

impl<T> MetadataRoles<T> {
    pub fn list(self) -> Vec<(&'static str, T)> {
        vec![
            (METADATA_SETTER_ROLE, self.metadata_setter),
            (METADATA_SETTER_UPDATER_ROLE, self.metadata_setter_updater),
            (METADATA_LOCKER_ROLE, self.metadata_locker),
            (METADATA_LOCKER_UPDATER_ROLE, self.metadata_locker_updater),
        ]
    }
}

#[macro_export]
macro_rules! metadata_roles {
    {$($role:ident => $rule:expr;)*} => ({
        internal_roles!(MetadataRoles, $($role => $rule;)*)
    });
}