feat: serde feature

This commit is contained in:
sinu
2024-08-12 13:29:33 -07:00
parent 0e2b78bf16
commit 7fb354cf55
4 changed files with 6 additions and 1 deletions

View File

@@ -8,13 +8,14 @@ license = "Apache-2.0/MIT"
repository = "https://github.com/antouhou/rs-merkle"
documentation = "https://docs.rs/rs_merkle/"
readme = "README.md"
keywords = ["merkle", "tree", "proof", "hash", "multiproof",]
keywords = ["merkle", "tree", "proof", "hash", "multiproof"]
exclude = ["/ci/*", "/scripts/*", "/.github/*", "/bors.toml"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
sha2 = { version = "0.10", default-features = false }
serde = { version = "1", optional = true, features = ["derive"] }
# standard crate data is left out
[dev-dependencies]
@@ -23,3 +24,4 @@ rayon = "1.5.1"
[features]
default = ['std']
std = ["sha2/std"]
serde = ["dep:serde"]

View File

@@ -47,6 +47,7 @@ use core::convert::TryFrom;
///
/// [`Hasher`]: crate::Hasher
/// [`algorithms::Sha256`]: crate::algorithms::Sha256
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct MerkleProof<H> {
proof_hashes: Vec<H>,
}

View File

@@ -15,6 +15,7 @@ use crate::{
/// roll back to any previously committed state of the tree. This scenario is similar to Git and
/// can be found in databases and file systems.
#[derive(Clone)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct MerkleTree<H> {
current_working_tree: PartialTree<H>,
history: Vec<PartialTree<H>>,

View File

@@ -12,6 +12,7 @@ type PartialTreeLayer<H> = Vec<(usize, H)>;
/// [`MerkleTree`]: crate::MerkleTree
/// [`MerkleProof`]: crate::MerkleProof
#[derive(Clone)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct PartialTree<H> {
layers: Vec<Vec<(usize, H)>>,
}