diff --git a/base/src/addressing.rs b/base/src/addressing.rs index 1e3f9b8..4f6f287 100644 --- a/base/src/addressing.rs +++ b/base/src/addressing.rs @@ -242,6 +242,8 @@ pub trait Addressable: AsMultihash { } } +impl Addressable for T where T: AsMultihash {} + #[cfg(test)] mod tests { use url::Url; diff --git a/base/src/entry.rs b/base/src/entry.rs index 737e2e3..931e987 100644 --- a/base/src/entry.rs +++ b/base/src/entry.rs @@ -1,4 +1,4 @@ -use crate::addressing::{Address, Addressable}; +use crate::addressing::Address; use crate::error::UpEndError; use crate::hash::{b58_decode, sha256hash, AsMultihash, AsMultihashError, UpMultihash}; use chrono::NaiveDateTime; @@ -110,9 +110,6 @@ impl AsMultihash for InvariantEntry { } } -impl Addressable for Entry {} -impl Addressable for InvariantEntry {} - impl EntryValue { pub fn to_string(&self) -> Result { let (type_char, content) = match self { diff --git a/base/src/hash.rs b/base/src/hash.rs index 892c8a5..667c646 100644 --- a/base/src/hash.rs +++ b/base/src/hash.rs @@ -154,6 +154,15 @@ pub trait AsMultihash { fn as_multihash(&self) -> Result; } +impl AsMultihash for T +where + T: AsRef<[u8]>, +{ + fn as_multihash(&self) -> Result { + sha256hash(self) + } +} + #[cfg(test)] mod tests { use crate::hash::{b58_decode, b58_encode};