1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// Copyright 2020 ChainSafe Systems
// SPDX-License-Identifier: Apache-2.0
use super::*;
/// Trait that merges the hashes of child nodes
/// and calculates the hash of their parent
pub trait MerkleMerger {
    /// Type that represents the hash value
    type Hash;
    /// Merges hashes of child nodes,
    /// with metadata of the target node
    fn merge(
        hashes: [Option<Self::Hash>; 2],
        metadata: MerkleTreeNodeMetadata,
    ) -> Option<Self::Hash>;
}