6 个版本
0.3.1 | 2021年10月19日 |
---|---|
0.3.0 | 2021年10月19日 |
0.2.0 | 2021年7月6日 |
0.1.2 | 2021年6月24日 |
#917 in 文件系统
用于 houseflow
20KB
287 代码行
szafka
Rust中的持久化数据存储。
用法
同步API用法
#[tokio::main]
async fn main() {
use szafka::Szafka;
use serde::{Serialize, Deserialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
struct Something {
name: String,
id: u64,
}
let szafka = Szafka::new("/tmp/welcome-to-szafka");
let something = Something {
name: String::from("John"),
id: 1000,
};
szafka.save(&something).expect("save failed");
let retrieved = szafka.get().expect("get data failed");
assert_eq!(something, retrieved);
}
异步API用法(启用 async
功能)
#[tokio::main]
async fn main() {
use szafka::AsyncSzafka;
use serde::{Serialize, Deserialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
struct Something {
name: String,
id: u64,
}
let szafka = AsyncSzafka::new("/tmp/welcome-to-async-szafka");
let something = Something {
name: String::from("John"),
id: 1000,
};
szafka.save(&something).await.expect("save failed");
let retrieved = szafka.get().await.expect("get data failed");
assert_eq!(something, retrieved);
}
更多信息请参阅文档
测试
所有测试: cargo test
. 文档测试: cargo test --doc
. 单元测试: cargo test --tests
.
使用tarpaulin检查代码覆盖率。
cargo tarpaulin --lib
Oct 19 22:04:02.086 INFO cargo_tarpaulin::report: Coverage Results:
|| Tested/Total Lines:
|| src/async.rs: 70/79
|| src/sync.rs: 68/72
||
91.39% coverage, 138/151 lines covered
基准测试
使用cargo bench
运行基准测试。
我的Optiplex 9020机器上的结果,该机器配备Intel i7-4790,NVMe,Linux 5.14
save time: [7.3328 us 7.4197 us 7.5088 us]
get time: [48.460 us 48.577 us 48.737 us]
async-save time: [22.558 us 22.745 us 22.930 us]
async-get time: [58.201 us 58.599 us 59.142 us]
为什么
我需要存储持久数据,如令牌或缓存数据,用于Houseflow CLI 应用程序
依赖关系
~0.7–2.6MB
~53K SLoC