Rust leveldb bindings

Almost-complete bindings for leveldb for Rust.

Documentation

Rust version policy

leveldb is built and tested on stable releases of Rust. This are currently 1.20.0 and 1.15.0. Nightlies might not build at any point and failures are allowed. There are no known issues with nightlies, though.

Prerequisites

snappy and leveldb need to be installed. On Ubuntu, I recommend:

sh sudo apt-get install libleveldb-dev libsnappy-dev

Usage

If your project is using Cargo, drop the following lines in your Cargo.toml:

```text [dependencies]

leveldb = "0.8" ```

Development

Make sure you have all prerequisites installed. Run

sh $ cargo build

for building and

sh $ cargo test

to run the test suite.

Examples

```rust extern crate tempdir; extern crate leveldb;

use tempdir::TempDir; use leveldb::database::Database; use leveldb::kv::KV; use leveldb::options::{Options,WriteOptions,ReadOptions};

fn main() { let tempdir = TempDir::new("demo").unwrap(); let path = tempdir.path();

let mut options = Options::new(); options.createifmissing = true; let mut database = match Database::open(path, options) { Ok(db) => { db }, Err(e) => { panic!("failed to open database: {:?}", e) } };

let writeopts = WriteOptions::new(); match database.put(writeopts, 1, &[1]) { Ok(_) => { () }, Err(e) => { panic!("failed to write to database: {:?}", e) } };

let readopts = ReadOptions::new(); let res = database.get(readopts, 1);

match res { Ok(data) => { assert!(data.issome()); asserteq!(data, Some(vec![1])); } Err(e) => { panic!("failed reading data: {:?}", e) } }

let readopts = ReadOptions::new(); let mut iter = database.iter(readopts); let entry = iter.next(); assert_eq!( entry, Some((1, vec![1])) ); } ```

Open issues

License

MIT, see LICENSE