An ORM wrapper for Rust levedb 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 currently1.31.0
and1.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:
sh
sudo apt-get install libleveldb-dev libsnappy-dev
The struct should impl Serialize
and Deserialize
, so we need serde
macros
toml
[dependencies]
leveldb = "0.8"
leveldb-orm = { version = "0.1", features = ["macros"]}
serde = { version = "1.0", features = ["derive"] }
Then, on your main.rs:
```rust use leveldb::database::Database; use leveldb::options::Options; use leveldb_orm::{KVOrm, KeyOrm, LevelDBOrm}; use serde::{Deserialize, Serialize};
pub struct Command {
pub executable: u8,
pub args: Vec
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.