From f487fff889cdb2bf00b42769dd4cc367b5cfefe5 Mon Sep 17 00:00:00 2001 From: morph <82043364+morph-dev@users.noreply.github.com> Date: Mon, 25 Mar 2024 21:05:08 +0200 Subject: [PATCH] update db interface --- Cargo.toml | 2 +- db/src/lib.rs | 6 +++--- db/src/memory_db.rs | 29 ++++++++++++----------------- merkle_old/src/nodes/node.rs | 2 +- 4 files changed, 17 insertions(+), 22 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 4ad040e..9352725 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = [ "db", "merkle_old", "verkle" ] +members = [ "db", "merkle_old", "merkle", "verkle" ] resolver = "2" [profile.bench] diff --git a/db/src/lib.rs b/db/src/lib.rs index 1eb5d65..5f7dfcb 100644 --- a/db/src/lib.rs +++ b/db/src/lib.rs @@ -1,10 +1,10 @@ -pub mod errors; use errors::DbError; +pub mod errors; pub mod memory_db; pub trait Db { - fn write(&mut self, key: &K, value: &V) -> Result<(), DbError>; + fn write(&mut self, key: K, value: V) -> Result<(), DbError>; - fn read(&self, key: &K) -> Result, DbError>; + fn read(&self, key: &K) -> Result, DbError>; } diff --git a/db/src/memory_db.rs b/db/src/memory_db.rs index 4817e9e..2d49755 100644 --- a/db/src/memory_db.rs +++ b/db/src/memory_db.rs @@ -1,6 +1,6 @@ use super::{Db, DbError}; -use std::{cmp::Eq, collections::HashMap, hash::Hash}; +use std::{collections::HashMap, hash::Hash}; #[derive(Default)] pub struct MemoryDb { @@ -15,19 +15,14 @@ impl MemoryDb { } } -impl Db for MemoryDb -where - K: Clone + Eq + Hash, - V: Clone, -{ - fn write(&mut self, key: &K, value: &V) -> Result<(), DbError> { - self.data.insert(key.clone(), value.clone()); +impl Db for MemoryDb { + fn write(&mut self, key: K, value: V) -> Result<(), DbError> { + self.data.insert(key, value); Ok(()) } - fn read(&self, key: &K) -> Result, DbError> { - let v = self.data.get(key).cloned(); - Ok(v) + fn read(&self, key: &K) -> Result, DbError> { + Ok(self.data.get(key)) } } @@ -49,8 +44,8 @@ mod tests { let mut memory_db: MemoryDb<[u8; 4], [u16; 8]> = MemoryDb::new(); let key = [1u8, 2, 3, 4]; let value = [1u16, 1, 2, 3, 5, 8, 13, 21]; - assert_ok!(memory_db.write(&key, &value)); - assert_ok_eq!(memory_db.read(&key), Some(value)); + assert_ok!(memory_db.write(key, value.clone())); + assert_ok_eq!(memory_db.read(&key), Some(&value)); } #[test] @@ -60,10 +55,10 @@ mod tests { let value1 = [0u16, 1, 1, 2, 3, 5, 8, 13]; let value2 = [1u16, 1, 2, 3, 5, 8, 13, 21]; - assert_ok!(memory_db.write(&key, &value1)); - assert_ok_eq!(memory_db.read(&key), Some(value1)); + assert_ok!(memory_db.write(key, value1.clone())); + assert_ok_eq!(memory_db.read(&key), Some(&value1)); - assert_ok!(memory_db.write(&key, &value2)); - assert_ok_eq!(memory_db.read(&key), Some(value2)); + assert_ok!(memory_db.write(key, value2.clone())); + assert_ok_eq!(memory_db.read(&key), Some(&value2)); } } diff --git a/merkle_old/src/nodes/node.rs b/merkle_old/src/nodes/node.rs index 920e042..63b3378 100644 --- a/merkle_old/src/nodes/node.rs +++ b/merkle_old/src/nodes/node.rs @@ -175,7 +175,7 @@ impl NodeRef { pub fn save(&self, db: &mut Box>>) -> Result<()> { match &self.node { None => bail!("Trying to save unknown node"), - Some(node) => Ok(db.write(&self.hash, &alloy_rlp::encode(node))?), + Some(node) => Ok(db.write(self.hash.clone(), alloy_rlp::encode(node))?), } }