36 lines
1 KiB
Rust
36 lines
1 KiB
Rust
use pallas_primitives::alonzo;
|
|
|
|
use crate::MultiEraMeta;
|
|
|
|
impl<'b> MultiEraMeta<'b> {
|
|
pub fn as_alonzo(&self) -> Option<&alonzo::Metadata> {
|
|
match self {
|
|
Self::AlonzoCompatible(x) => Some(x),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
pub fn is_empty(&self) -> bool {
|
|
match self {
|
|
MultiEraMeta::AlonzoCompatible(x) => x.is_empty(),
|
|
_ => true,
|
|
}
|
|
}
|
|
|
|
pub fn find(&self, label: alonzo::MetadatumLabel) -> Option<&alonzo::Metadatum> {
|
|
self.as_alonzo()?
|
|
.iter()
|
|
.find_map(|(key, value)| if key.eq(&label) { Some(value) } else { None })
|
|
}
|
|
|
|
pub fn collect<'a, T>(&'a self) -> T
|
|
where
|
|
T: FromIterator<(alonzo::MetadatumLabel, &'a alonzo::Metadatum)>,
|
|
{
|
|
match self {
|
|
MultiEraMeta::NotApplicable => std::iter::empty().collect(),
|
|
MultiEraMeta::Empty => std::iter::empty().collect(),
|
|
MultiEraMeta::AlonzoCompatible(x) => x.iter().map(|(k, v)| (*k, v)).collect(),
|
|
}
|
|
}
|
|
}
|