| Crates.io | leveldb-orm |
| lib.rs | leveldb-orm |
| version | 0.1.5 |
| created_at | 2022-07-14 06:59:16.827451+00 |
| updated_at | 2023-03-20 08:25:59.780799+00 |
| 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.