24 个版本

使用旧的 Rust 2015

0.8.6 2020年9月20日
0.8.5 2020年6月4日
0.8.4 2017年9月20日
0.8.3 2015年12月23日
0.2.0 2014年11月25日

#143数据库接口

Download history 3895/week @ 2023-11-20 16902/week @ 2023-11-27 17903/week @ 2023-12-04 17696/week @ 2023-12-11 12036/week @ 2023-12-18 1615/week @ 2023-12-25 12660/week @ 2024-01-01 18561/week @ 2024-01-08 17636/week @ 2024-01-15 10327/week @ 2024-01-22 8710/week @ 2024-01-29 8708/week @ 2024-02-05 7681/week @ 2024-02-12 8965/week @ 2024-02-19 9210/week @ 2024-02-26 9057/week @ 2024-03-04

35,144 每月下载
18 个Crates中使用 (14 个直接使用)

MIT 许可证

52KB
1K SLoC

Rust leveldb 绑定

为Rust提供的leveldb几乎完整的绑定。

文档

Rust版本策略

leveldb 在Rust的稳定版本上构建和测试。目前是 1.31.01.43.1。Nightlies可能在任何时间点都无法构建,并且允许失败。不过,目前没有关于Nightlies的已知问题。

先决条件

snappyleveldb 需要安装。在Ubuntu上,我推荐

sudo apt-get install libleveldb-dev libsnappy-dev

用法

如果你的项目使用 Cargo,将以下行添加到你的 Cargo.toml

[dependencies]

leveldb = "0.8"

开发

确保你已经安装了所有先决条件。运行

$ 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((1, vec![1]))
  );
}

开放问题

  • 缺少过滤策略
  • 不支持具有任意起始和结束点的迭代器

许可证

MIT,见 LICENSE

依赖项

~1.5MB
~26K SLoC