Enhancement of the Partial Merkle Tree (#163)

feat: implement additional functionality for the PartialMerkleTree
This commit is contained in:
Andrey Khmuro
2023-07-06 00:19:03 +03:00
committed by GitHub
parent 813fe24b88
commit 08aec4443c
5 changed files with 342 additions and 35 deletions

View File

@@ -1,4 +1,5 @@
use super::{Felt, MerkleError, RpoDigest, StarkField};
use crate::utils::{ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable};
use core::fmt::Display;
// NODE INDEX
@@ -161,6 +162,22 @@ impl Display for NodeIndex {
}
}
impl Serializable for NodeIndex {
fn write_into<W: ByteWriter>(&self, target: &mut W) {
target.write_u8(self.depth);
target.write_u64(self.value);
}
}
impl Deserializable for NodeIndex {
fn read_from<R: ByteReader>(source: &mut R) -> Result<Self, DeserializationError> {
let depth = source.read_u8()?;
let value = source.read_u64()?;
NodeIndex::new(depth, value)
.map_err(|_| DeserializationError::InvalidValue("Invalid index".into()))
}
}
#[cfg(test)]
mod tests {
use super::*;