Releases: deltadevsde/indexed-merkle-tree
Releases · deltadevsde/indexed-merkle-tree
0.5.1
Version 0.5.0 introduced breaking changes:
Hash Value Type Change: The crate no longer uses String for hash values. Instead, a custom Hash struct is implemented:
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct Hash([u8; 32]);
impl Hash {
pub const fn new(bytes: [u8; 32]) -> Self {
Hash(bytes)
}
pub fn from_hex(hex: &str) -> Result<Self, hex::FromHexError> {
let bytes = hex::decode(hex)?;
if bytes.len() != 32 {
return Err(hex::FromHexError::InvalidStringLength);
}
let mut array = [0u8; 32];
array.copy_from_slice(&bytes);
Ok(Hash(array))
}
pub fn to_hex(&self) -> String {
hex::encode(self.0)
}
}
impl AsRef<[u8]> for Hash {
fn as_ref(&self) -> &[u8] {
&self.0
}
}
impl std::fmt::Display for Hash {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.to_hex())
}
}