Crates.io | leveldb_minimal |
lib.rs | leveldb_minimal |
version | 0.1.0 |
source | src |
created_at | 2020-09-12 12:26:15.092761 |
updated_at | 2020-09-12 12:26:15.092761 |
description | An minimal interface for leveldb |
homepage | https://github.com/librelois/leveldb |
repository | https://github.com/librelois/leveldb |
max_upload_size | |
id | 287716 |
size | 54,916 |
Minimal bindings for leveldb for Rust.
This crate is a fork of leveldb that:
The goal of this fork is to be used as a backend of the kv_typed crate which already handles typing and iterators on keys or values only.
leveldb
is built and tested on stable releases of Rust. This are currently 1.46.0
. Nightlies
might not build at any point and failures are allowed.
snappy
and leveldb
need to be installed. On Ubuntu, I recommend:
sudo apt-get install libleveldb-dev libsnappy-dev
If your project is using Cargo, drop the following lines in your Cargo.toml
:
[dependencies]
leveldb-minimal = "0.1"
Make sure you have all prerequisites installed. Run
$ cargo build
for building and
$ cargo test
to run the test suite.
extern crate tempdir;
extern crate leveldb;
use tempdir::TempDir;
use leveldb::database::Database;
use leveldb::iterator::Iterable;
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.create_if_missing = true;
let mut database = match Database::open(path, options) {
Ok(db) => { db },
Err(e) => { panic!("failed to open database: {:?}", e) }
};
let write_opts = WriteOptions::new();
match database.put(write_opts, &[1], &[1]) {
Ok(_) => { () },
Err(e) => { panic!("failed to write to database: {:?}", e) }
};
let read_opts = ReadOptions::new();
let res = database.get(read_opts, &[1]);
match res {
Ok(data) => {
assert!(data.is_some());
assert_eq!(data, Some(vec![1]));
}
Err(e) => { panic!("failed reading data: {:?}", e) }
}
let read_opts = ReadOptions::new();
let mut iter = database.iter(read_opts);
let entry = iter.next();
assert_eq!(
entry,
Some((vec![1], vec![1]))
);
}
MIT, see LICENSE