#![cfg_attr(docsrs, feature(doc_cfg))]
#![doc = include_str!("../README.md")]
#![deny(missing_docs)]
#![no_std]
#[cfg(feature = "alloc")]
extern crate alloc;
#[cfg(feature = "std")]
extern crate std;
#[doc(hidden)]
pub mod __private {
#[cfg(feature = "schema")]
pub use borsh;
}
#[cfg(feature = "schema")]
mod schema;
#[cfg(feature = "std")]
mod mem;
#[cfg(feature = "std")]
pub use mem::*;
#[cfg(feature = "rocksdb")]
mod rocks;
#[cfg(feature = "rocksdb")]
pub use rocks::{RocksDB, new_rocksdb};
#[cfg(feature = "parity-db")]
mod parity_db;
#[cfg(feature = "parity-db")]
pub use parity_db::{ParityDb, new_parity_db};
pub trait Get {
fn get(&self, key: impl AsRef<[u8]>) -> Option<impl AsRef<[u8]>>;
}
pub trait Transaction: Get {
fn set(&mut self, key: impl AsRef<[u8]>, value: impl AsRef<[u8]>);
fn del(&mut self, key: impl AsRef<[u8]>);
fn commit(self);
}
pub trait Db: Clone + Get {
type Transaction<'db>: Transaction
where
Self: 'db;
fn txn(&mut self) -> Self::Transaction<'_>;
}