miden_crypto/merkle/smt/simple/
proof.rs1use crate::{
2 Word,
3 merkle::{MerkleError, MerkleProof, SparseMerklePath},
4};
5
6#[derive(Clone, Debug, Default, PartialEq, Eq)]
8pub struct SimpleSmtProof {
9 pub value: Word,
11 pub path: SparseMerklePath,
14}
15
16impl SimpleSmtProof {
17 pub fn new(value: Word, path: SparseMerklePath) -> Self {
21 Self { value, path }
22 }
23}
24
25impl From<(SparseMerklePath, Word)> for SimpleSmtProof {
26 fn from((path, value): (SparseMerklePath, Word)) -> Self {
27 SimpleSmtProof::new(value, path)
28 }
29}
30
31impl TryFrom<MerkleProof> for SimpleSmtProof {
32 type Error = MerkleError;
33
34 fn try_from(other: MerkleProof) -> Result<Self, MerkleError> {
39 let MerkleProof { value, path } = other;
40 let path = SparseMerklePath::try_from(path)?;
41 Ok(SimpleSmtProof { value, path })
42 }
43}
44
45impl From<SimpleSmtProof> for MerkleProof {
46 fn from(other: SimpleSmtProof) -> Self {
47 let SimpleSmtProof { value, path } = other;
48 MerkleProof { value, path: path.into() }
49 }
50}
51
52impl PartialEq<MerkleProof> for SimpleSmtProof {
53 fn eq(&self, rhs: &MerkleProof) -> bool {
54 self.value == rhs.value && self.path == rhs.path
55 }
56}
57
58impl PartialEq<SimpleSmtProof> for MerkleProof {
59 fn eq(&self, rhs: &SimpleSmtProof) -> bool {
60 rhs == self
61 }
62}