diff --git a/src/cid.rs b/src/cid.rs index 2a06f3c..d0a0572 100644 --- a/src/cid.rs +++ b/src/cid.rs @@ -207,7 +207,7 @@ impl TryFrom<&[u8]> for Cid { let version = Version::try_from(raw_version)?; let (raw_codec, hash) = varint_decode::u64(&remain)?; - let codec = Codec::from(raw_codec)?; + let codec = Codec::try_from(raw_codec)?; let mh = MultihashRef::from_slice(hash)?.to_owned(); diff --git a/src/codec.rs b/src/codec.rs index 0828397..0819176 100644 --- a/src/codec.rs +++ b/src/codec.rs @@ -1,3 +1,5 @@ +use std::convert::TryFrom; + use crate::error::{Error, Result}; macro_rules! build_codec_enum { @@ -8,9 +10,11 @@ macro_rules! build_codec_enum { $( #[$attr] $codec, )* } - impl Codec { + impl TryFrom for Codec { + type Error = Error; + /// Convert a number to the matching codec, or `Error` if unknown codec is matching. - pub fn from(raw: u64) -> Result { + fn try_from(raw: u64) -> Result { match raw { $( $code => Ok(Self::$codec), )* _ => Err(Error::UnknownCodec), diff --git a/src/prefix.rs b/src/prefix.rs index 419582d..60183d5 100644 --- a/src/prefix.rs +++ b/src/prefix.rs @@ -26,7 +26,7 @@ impl Prefix { let version = Version::try_from(raw_version)?; let (raw_codec, remain) = varint_decode::u64(remain)?; - let codec = Codec::from(raw_codec)?; + let codec = Codec::try_from(raw_codec)?; let (raw_mh_type, remain) = varint_decode::u64(remain)?; let mh_type = match multihash::Code::from_u64(raw_mh_type) {