use crate::errors::AccountError;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum StoragePatchOperation {
Create = Self::CREATE,
Update = Self::UPDATE,
Remove = Self::REMOVE,
}
impl StoragePatchOperation {
const CREATE: u8 = 0;
const UPDATE: u8 = 1;
const REMOVE: u8 = 2;
pub const fn as_u8(&self) -> u8 {
*self as u8
}
pub const fn is_create(&self) -> bool {
matches!(self, Self::Create)
}
pub const fn is_update(&self) -> bool {
matches!(self, Self::Update)
}
pub const fn is_remove(&self) -> bool {
matches!(self, Self::Remove)
}
}
impl TryFrom<u8> for StoragePatchOperation {
type Error = AccountError;
fn try_from(value: u8) -> Result<Self, Self::Error> {
match value {
Self::CREATE => Ok(Self::Create),
Self::UPDATE => Ok(Self::Update),
Self::REMOVE => Ok(Self::Remove),
other => Err(AccountError::UnknownStoragePatchOperation(other)),
}
}
}