2 个版本
使用旧的 Rust 2015
0.9.1 | 2017 年 9 月 13 日 |
---|---|
0.9.0 | 2017 年 7 月 17 日 |
在 Rust 模式 中排名第 1406
每月下载量 42
38KB
798 行代码(不包括注释)
Rust leveldb 绑定
为 Rust 的 leveldb 提供不完整的绑定。
Rust 版本策略
leveldb
是在 Rust 的稳定版本上构建和测试的。目前是 1.0.0-beta
。夜间的构建可能随时失败,失败是被允许的。
先决条件
snappy
和 leveldb
需要安装。在 Ubuntu 上,我推荐这样做。
sudo apt-get install libleveldb-dev libsnappy-dev
用法
如果你的项目正在使用 Cargo,请在你的 Cargo.toml
中添加以下行
[dependencies]
leveldb = "*"
开发
确保已安装所有先决条件。运行
$ cargo build
进行构建
$ cargo test
运行测试套件。
示例
#[allow(unstable)]
extern crate leveldb;
use std::fs::TempDir;
use leveldb::database::Database;
use leveldb::iterator::Iterable;
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((1, vec![1]))
);
}
打开问题
- 缺少筛选策略
- 不支持具有任意起始和结束点的迭代器
许可证
MIT,见 LICENSE
依赖关系
~1.5MB
~26K SLoC