对等点对点B树
项目描述
Hyperbee
基于Hypercore构建的对等点对点只增B树。与JavaScript版本兼容。
$ cargo add hyperbee
用法
从示例
use hyperbee::Hyperbee;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let hb = Hyperbee::from_ram().await?;
// Insert "world" with key "hello"
hb.put(b"hello", Some(b"world")).await?;
// Get the value for key "hello"
let Some((_seq, Some(val))) = hb.get(b"hello").await? else {
panic!("could not get value");
};
assert_eq!(val, b"world");
// Trying to get a non-exsitant key returns `None`
let res = hb.get(b"no key here").await?;
assert_eq!(res, None);
// Deleting a key returns `true` if it was present
let res = hb.del(b"hello").await?;
assert!(res.is_some());
// Getting deleted key returns `None`
let res = hb.get(b"hello").await?;
assert_eq!(res, None);
Ok(())
}
其他语言绑定
我们使用UniFFI为其他语言生成库。要为Python构建库,运行
cargo build -F ffi && cargo run -F ffi --bin uniffi-bindgen generate --library target/debug/libhyperbee.so --language python --out-dir out
这会生成一个名为out/hyperbee.py
的文件,可以用于。此文件要求与.py
文件一起存在libhyperbee.so
。可分发Python包仍在开发中。目前仅测试了Python。有关示例用法,请参阅测试。
与JS Hyperbee的兼容性
- 与JS Hyperbee文件完全功能互操作性
- 读写和删除操作
- 有序键流操作,类似于JS的
createReadStream
- 支持键流操作的边界,如
gt
,lt
等。 - 接受比较和交换的
put
和del
。 - 支持类似于JS的
sub
前缀键操作。 - 一对一的二进制输出
未来工作
- 构建FFI包装器
- 改进的线格式
- 可配置的树参数
开发
使用$ cargo test
运行测试。
项目详情
关闭
哈希值 for hypercore-0.0.1-py3-none-manylinux_2_34_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1ecfad0b3060f496e60dbcb177095713467efb41545ef9f7ed5c38f134f3488c |
|
MD5 | b3b5f96271d8c25358deac2a6fbff54b |
|
BLAKE2b-256 | 89301492be4433b2e5baa0a13b761c8f59ee88a67a0db62a8ce0b668baef996d |