use anyhow::Error; #[derive(Debug, Eq, PartialEq)] pub struct MimeType(mime::Mime); impl From for MimeType { fn from(mime: mime::Mime) -> Self { MimeType(mime) } } impl libipld::codec::Encode for MimeType { fn encode(&self, _c: C, w: &mut W) -> libipld::error::Result<()> { w.write_all(self.0.essence_str().as_bytes()).map_err(Error::from) } } impl libipld::codec::Decode for MimeType { fn decode(c: libipld_cbor::DagCborCodec, r: &mut R) -> libipld::error::Result { use std::str::FromStr; String::decode(c, r) .map_err(Error::from) .and_then(|s| mime::Mime::from_str(&s).map_err(Error::from)) .map(MimeType) } }