Crates.io | koit |
lib.rs | koit |
version | 0.2.0 |
source | src |
created_at | 2020-11-30 21:48:59.0648 |
updated_at | 2021-05-13 14:40:53.31784 |
description | A simple, asynchronous, pure-Rust, structured, embedded database |
homepage | |
repository | https://github.com/tomcur/koit |
max_upload_size | |
id | 318389 |
size | 25,469 |
Koit is a simple, asynchronous, pure-Rust, structured, embedded database.
[dependencies]
koit = "0.2"
use std::default::Default;
use koit::{FileDatabase, format::Json};
use serde::{Deserialize, Serialize};
#[derive(Default, Deserialize, Serialize)]
struct Data {
cats: u64,
yaks: u64,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let db = FileDatabase::<Data, Json>::load_from_path_or_default("./db.json").await?;
db.write(|data| {
data.cats = 10;
data.yaks = 32;
}).await;
assert_eq!(db.read(|data| data.cats + data.yaks).await, 42);
db.save().await?;
Ok(())
}
By default, Koit comes with its file-backend, JSON formatter and Bincode formatter enabled. You can cherry-pick features instead.
[dependencies.koit]
version = "0.2"
default-features = false
features = ["bincode-format"]
Koit enables quickly implementing persistence and concurrent access to structured data. It is meant to be used with relatively small amounts (megabytes) of data.
It is not a performant database. Upon loading, the entire data structure is kept in memory. Upon saving, the entire data structure is formatted and written to the storage backend.
Koit is inspired by Rustbreak, a similar (synchronous) database.
This project is licensed under the MIT license.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Koit by you, shall be licensed as MIT, without any additional terms or conditions.