Crates.io | szafka |
lib.rs | szafka |
version | 0.3.1 |
source | src |
created_at | 2021-06-20 22:22:07.688286 |
updated_at | 2021-10-19 20:18:41.043054 |
description | Persistent data store in Rust. |
homepage | https://github.com/gbaranski/szafka/ |
repository | https://github.com/gbaranski/szafka/ |
max_upload_size | |
id | 412596 |
size | 45,960 |
Persistent data store in Rust.
Sync API usage:
#[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);
}
Async API usage(enable with async
feature):
#[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);
}
More information can be found in the documentation
All tests: cargo test
.
Documentation tests: cargo test --doc
.
Unit tests: cargo test --tests
.
Check code coverage using 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
Run benchmarks using cargo bench
.
Results from my Optiplex 9020 machine with 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]
I needed to store persistant data such as bearer tokens or cached data somewhere for Houseflow CLI App