feat: remove clone requirement for MerkleStore From constructors

This commit is contained in:
Bobbin Threadbare
2023-04-21 11:22:36 -07:00
parent 59595a2e04
commit 9be4253f19
4 changed files with 40 additions and 29 deletions

View File

@@ -393,33 +393,41 @@ impl MerkleStore {
}
}
// CONVERTIONS
// CONVERSIONS
// ================================================================================================
impl From<MerkleTree> for MerkleStore {
fn from(value: MerkleTree) -> Self {
impl From<&MerkleTree> for MerkleStore {
fn from(value: &MerkleTree) -> Self {
let mut store = MerkleStore::new();
store.extend(value.inner_nodes());
store
}
}
impl From<SimpleSmt> for MerkleStore {
fn from(value: SimpleSmt) -> Self {
impl From<&SimpleSmt> for MerkleStore {
fn from(value: &SimpleSmt) -> Self {
let mut store = MerkleStore::new();
store.extend(value.inner_nodes());
store
}
}
impl From<Mmr> for MerkleStore {
fn from(value: Mmr) -> Self {
impl From<&Mmr> for MerkleStore {
fn from(value: &Mmr) -> Self {
let mut store = MerkleStore::new();
store.extend(value.inner_nodes());
store
}
}
impl FromIterator<InnerNodeInfo> for MerkleStore {
fn from_iter<T: IntoIterator<Item = InnerNodeInfo>>(iter: T) -> Self {
let mut store = MerkleStore::new();
store.extend(iter.into_iter());
store
}
}
// ITERATORS
// ================================================================================================