#[repr(u32)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ContractType {
Host = 0,
Plugin = 1,
}
impl ContractType {
#[inline]
pub const fn from_u32(value: u32) -> Option<ContractType> {
match value {
0 => Some(ContractType::Host),
1 => Some(ContractType::Plugin),
_ => None,
}
}
}
#[cfg(test)]
mod tests {
use crate::contract_type::ContractType;
#[test]
fn from_u32_maps_known_and_rejects_unknown() {
assert_eq!(ContractType::from_u32(0), Some(ContractType::Host));
assert_eq!(ContractType::from_u32(1), Some(ContractType::Plugin));
assert_eq!(ContractType::from_u32(2), None);
assert_eq!(ContractType::from_u32(u32::MAX), None);
}
}