1 个不稳定版本
0.1.0 | 2019年2月28日 |
---|
#39 in #concurrent
1.5MB
32K SLoC
实验性的FASTER Rust包装器
包括实验性的FASTER C接口。它目前假设KEY,VALUE类型为u64。此包装器仅关注Linux支持。
在开始使用此包装器之前,确保您能编译C++版本可能是一个好主意。
以下是某些示例操作。
extern crate faster_kvs;
use faster_kvs::*;
const TABLE_SIZE: u64 = 1 << 14;
const LOG_SIZE: u64 = 17179869184;
fn main() {
if let Ok(store) = FasterKv::new(TABLE_SIZE, LOG_SIZE, String::from("storage_dir")) {
let key: u64 = 1;
let value: u64 = 1000;
// Upsert
store.upsert(key, value);
// Read-Modify-Write
let incr: u64 = 50;
let rmw = store.rmw(key, incr);
assert_eq!(rmw, status::OK);
// Read
let (status, recv) = store.read(key);
assert_eq!(read, status::OK);
assert_eq!(recv.recv().unwrap(), value);
let bad_key: u64 = 2;
let bad_read = store.read(bad_key);
assert_eq!(bad_read, status::NOT_FOUND);
}
}
需要修复的问题
- 修复以便您可以从读取操作中返回值
- 尝试使用#repr(C)结构体而不是u64作为值
- 研究线程和Rust中的异步回调
- 完成C接口中其余的操作
- 与C++版本比较性能
依赖项
~0–2MB
~39K SLoC