3个版本
0.0.3 | 2023年12月24日 |
---|---|
0.0.2 | 2023年12月20日 |
0.0.1 | 2023年12月19日 |
#89 在 数据库实现
每月 28 次下载
在 entropy-rs 中使用
58KB
1K SLoC
bincode-sled - 基于sled构建的数据库
本项目受到typed-sled的启发,typed-sled是sled的一个出色的类型化中间件。
与typed-sled的区别
- 使用bincode-v2代替seder来处理数据。
- 删除数据的自定义实现。
sled是一个高性能的嵌入式数据库,其API类似于一个 BTreeMap<[u8], [u8]>
.
bincode-sled在sled的基础上构建,并提供了类似于 BTreeMap<K, V>
的API,其中K和V是用户定义的类型。
示例
use bincode::{Encode, Decode};
#[derive(Debug, Clone, Encode, Decode, PartialEq)]
struct SomeValue(u32);
// Creating a temporary sled database
let db = sled::Config::new().temporary(true).open().unwrap();
// The id is used by sled to identify which Tree in the database (db) to open
let tree = bincode_sled::Tree::<String, SomeValue>::open(&db, "unique_id");
// insert and get, similar to std's BTreeMap
tree.insert(&"some_key".to_owned(), &SomeValue(10))?;
assert_eq!(tree.get(&"some_key".to_owned())?, Some(SomeValue(10)));
Ok(())
功能
提供多种功能以供常见用例使用
- 使用 tantivy 通过树的关键字和值进行搜索的搜索引擎。
- 自动键生成。
- 将一个类型化的树转换为另一个类型化的树,具有不同的键和值类型。
依赖项
~2–7.5MB
~128K SLoC