2 个版本

使用旧的 Rust 2015

0.9.1 2017 年 9 月 13 日
0.9.0 2017 年 7 月 17 日

Rust 模式 中排名第 1406

每月下载量 42

MIT 许可证

38KB
798 行代码(不包括注释)

Rust leveldb 绑定

为 Rust 的 leveldb 提供不完整的绑定。

Rust 版本策略

leveldb 是在 Rust 的稳定版本上构建和测试的。目前是 1.0.0-beta。夜间的构建可能随时失败,失败是被允许的。

先决条件

snappyleveldb 需要安装。在 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