ibc_types_core_commitment/
root.rs1use core::fmt::Debug;
2
3use crate::prelude::*;
4
5use ibc_proto::ibc::core::commitment::v1::MerkleRoot as RawMerkleRoot;
6use ibc_types_domain_type::DomainType;
7
8#[derive(Clone, PartialEq, Eq)]
9pub struct MerkleRoot {
10 pub hash: Vec<u8>,
11}
12
13impl Debug for MerkleRoot {
14 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15 write!(f, "{:?}", hex::encode(&self.hash))
16 }
17}
18
19impl DomainType for MerkleRoot {
20 type Proto = RawMerkleRoot;
21}
22
23impl From<MerkleRoot> for RawMerkleRoot {
24 fn from(value: MerkleRoot) -> RawMerkleRoot {
25 RawMerkleRoot { hash: value.hash }
26 }
27}
28
29impl TryFrom<RawMerkleRoot> for MerkleRoot {
30 type Error = anyhow::Error;
31 fn try_from(value: RawMerkleRoot) -> Result<MerkleRoot, Self::Error> {
32 Ok(MerkleRoot { hash: value.hash })
33 }
34}