koit-toml

Crates.iokoit-toml
lib.rskoit-toml
version0.2.1
sourcesrc
created_at2021-05-20 04:14:06.964919
updated_at2021-05-20 04:44:04.366038
descriptionA simple, asynchronous, pure-Rust, structured, embedded database
homepage
repositoryhttps://github.com/tomcur/koit
max_upload_size
id399841
size25,070
gcxfd (gcxfd)

documentation

README

Koit

Crates.io MIT licensed

Koit is a simple, asynchronous, pure-Rust, structured, embedded database.

[dependencies]
koit = "0.2"

Example

use std::default::Default;

use koit::{FileDatabase, format::Toml};
use serde::{Deserialize, Serialize};

#[derive(Default, Deserialize, Serialize)]
struct Data {
    cats: u64,
    yaks: u64,
}

#[async_std::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let db = FileDatabase::<Data, Toml>::load_from_path_or_default("./db.toml").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(())
}

Features

  • built-in, future-aware, reader-writer synchronization
  • works with arbitrary data formatters
  • works with arbitrary storage backends
  • comes with default formatters and backends that fit more purposes

By default, Koit comes with its file-backend, JSON / Toml formatter and Bincode formatter enabled. You can cherry-pick features instead.

[dependencies.koit]
version = "0.2"
default-features = false
features = ["toml-format"]

Purpose

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.

Other crates

Koit is inspired by Rustbreak, a similar (synchronous) database.

License

This project is licensed under the MIT license.

Contribution

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.

Commit count: 6

cargo fmt