pub mod cbor_encodings;
pub mod serialization;
pub mod utils;
pub use utils::*; use cbor_encodings::AssetNameEncoding;
use cml_core::error::*;
use std::convert::TryFrom;
#[derive(
Clone, Debug, serde::Deserialize, serde::Serialize, schemars::JsonSchema, derivative::Derivative,
)]
#[derivative(Eq, PartialEq, Ord, PartialOrd, Hash)]
pub struct AssetName {
pub inner: Vec<u8>,
#[derivative(
PartialEq = "ignore",
Ord = "ignore",
PartialOrd = "ignore",
Hash = "ignore"
)]
#[serde(skip)]
pub encodings: Option<AssetNameEncoding>,
}
impl AssetName {
pub fn get(&self) -> &Vec<u8> {
&self.inner
}
pub fn new(inner: Vec<u8>) -> Result<Self, DeserializeError> {
if inner.len() > 32 {
return Err(DeserializeError::new(
"AssetName",
DeserializeFailure::RangeCheck {
found: inner.len() as isize,
min: Some(0),
max: Some(32),
},
));
}
Ok(Self {
inner,
encodings: None,
})
}
}
impl TryFrom<Vec<u8>> for AssetName {
type Error = DeserializeError;
fn try_from(inner: Vec<u8>) -> Result<Self, Self::Error> {
AssetName::new(inner)
}
}
impl From<AssetName> for Vec<u8> {
fn from(wrapper: AssetName) -> Self {
wrapper.inner
}
}