From 8c0ee6d17fe0dbd7748e7b60ff01a0e8f25faa51 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 14 Jan 2026 22:13:19 +0100 Subject: implement db trait without wrappers --- database/src/backends/memory.rs | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'database/src/backends/memory.rs') diff --git a/database/src/backends/memory.rs b/database/src/backends/memory.rs index d7d0e2c..0c1635f 100644 --- a/database/src/backends/memory.rs +++ b/database/src/backends/memory.rs @@ -4,30 +4,31 @@ Copyright (C) 2026 metamuffin */ -use crate::backends::{Db, ReadTransaction, ReadTxnFunction, WriteTransaction, WriteTxnFunction}; +use crate::backends::{ + Database, ReadTransaction, ReadTxnFunction, WriteTransaction, WriteTxnFunction, +}; use anyhow::Result; use std::{ collections::BTreeMap, sync::{RwLock, RwLockReadGuard, RwLockWriteGuard}, }; -type Inner = BTreeMap, Vec>; -pub struct Memory(RwLock, Vec>>); +type MemdbInner = BTreeMap, Vec>; +type Memdb = RwLock; -impl Memory { - pub fn new() -> Self { - Self(RwLock::new(BTreeMap::new())) - } +pub fn new() -> Memdb { + Memdb::default() } -impl Db for Memory { + +impl Database for Memdb { fn write_transaction(&self, f: &mut WriteTxnFunction) -> Result<()> { - f(&mut self.0.write().unwrap()) + f(&mut self.write().unwrap()) } fn read_transaction(&self, f: &mut ReadTxnFunction) -> Result<()> { - f(&self.0.read().unwrap()) + f(&self.read().unwrap()) } } -impl WriteTransaction for RwLockWriteGuard<'_, Inner> { +impl WriteTransaction for RwLockWriteGuard<'_, MemdbInner> { fn set(&mut self, key: &[u8], value: &[u8]) -> Result<()> { (**self).insert(key.to_vec(), value.to_vec()); Ok(()) @@ -37,7 +38,7 @@ impl WriteTransaction for RwLockWriteGuard<'_, Inner> { Ok(()) } } -impl ReadTransaction for RwLockWriteGuard<'_, Inner> { +impl ReadTransaction for RwLockWriteGuard<'_, MemdbInner> { fn get(&self, key: &[u8]) -> Result>> { Ok((**self).get(key).cloned()) } @@ -53,7 +54,7 @@ impl ReadTransaction for RwLockWriteGuard<'_, Inner> { }) } } -impl ReadTransaction for RwLockReadGuard<'_, Inner> { +impl ReadTransaction for RwLockReadGuard<'_, MemdbInner> { fn get(&self, key: &[u8]) -> Result>> { Ok((**self).get(key).cloned()) } -- cgit v1.3