Crates.io | leveldb-orm |
lib.rs | leveldb-orm |
version | 0.1.5 |
source | src |
created_at | 2022-07-14 06:59:16.827451 |
updated_at | 2023-03-20 08:25:59.780799 |
description | An ORM for leveldb |
homepage | https://github.com/dlhxzb/leveldb-orm |
repository | https://github.com/dlhxzb/leveldb-orm |
max_upload_size | |
id | 625497 |
size | 14,764 |
An ORM wrapper for Rust leveldb KV APIs. Use bincode to encoder / decoder key and object.
Base on rust leveldb:
leveldb
is built and tested on stable releases of Rust. This are currently 1.31.0
and 1.43.1
. Nightlies
might not build at any point and failures are allowed. There are no known issues with nightlies, though.
snappy
and leveldb
need to be installed. On Ubuntu, I recommend:
sudo apt-get install libleveldb-dev libsnappy-dev
The struct should impl Serialize
and Deserialize
, so we need serde
macros
[dependencies]
leveldb = "0.8"
leveldb-orm = { version = "0.1", features = ["macros"]}
serde = { version = "1.0", features = ["derive"] }
Then, on your main.rs:
use leveldb::database::Database;
use leveldb::options::Options;
use leveldb_orm::{KVOrm, KeyOrm, LeveldbOrm};
use serde::{Deserialize, Serialize};
#[derive(LeveldbOrm, Serialize, Deserialize)]
#[leveldb_key(executable, args)]
pub struct Command {
pub executable: u8,
pub args: Vec<String>,
pub current_dir: Option<String>,
}
fn main() {
let cmd = Command {
executable: 1,
args: vec!["arg1".into(), "arg2".into(), "arg3".into()],
current_dir: Some("\\dir".into()),
};
let mut options = Options::new();
options.create_if_missing = true;
let database = Database::open(std::path::Path::new("./mypath"), options).unwrap();
cmd.put(&database).unwrap();
let key = Command::encode_key((&cmd.executable, &cmd.args)).unwrap();
// or `let key = cmd.key().unwrap();`
Command::get(&database, &key).unwrap();
Command::delete(&database, false, &key).unwrap();
}
macros
featureOnly have to impl KeyOrm
trait manually.