1个不稳定版本
使用旧的Rust 2015
0.1.0 | 2020年9月12日 |
---|
#2303 在 数据库接口
42KB
925 行
Rust leveldb绑定
为Rust提供leveldb的最小绑定。
这个crate是leveldb的分支,
- 去掉了键的泛型
- 去掉了仅对键或值进行迭代的迭代器
- 解决了警告剪裁问题
目标
这个分支的目标是作为kv_typed crate的后端,该crate已经处理了类型和仅对键或值进行迭代的逻辑。
Rust版本策略
leveldb
在Rust的稳定版上构建和测试。目前是 1.46.0
。可能会在任何时候构建失败,失败是允许的。
先决条件
snappy
和 leveldb
需要安装。在Ubuntu上,我推荐
sudo apt-get install libleveldb-dev libsnappy-dev
使用
如果你的项目使用 Cargo,在你的 Cargo.toml
中添加以下行
[dependencies]
leveldb-minimal = "0.1"
开发
确保你已经安装了所有先决条件。运行
$ cargo build
进行构建和
$ cargo test
运行测试套件。
示例
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,见 LICENSE
依赖项
~1.5MB
~26K SLoC