5个版本

0.1.2 2024年8月11日
0.1.1 2024年8月11日
0.1.0 2024年8月11日
0.0.2 2024年8月11日
0.0.1 2024年8月11日

#4 in #libsql

Download history 151/week @ 2024-08-05 124/week @ 2024-08-12

每月275次下载

MIT/Apache

39KB
529 代码行

Kyval

Crates version Rust version Crates.io Total Downloads Contribution welcome


Kyval是一个基于LibSQL的简单键值存储。该项目是Kyval Rust的分支,最初由 Christian Llontop 创建。通过使用LibSQL,Kyval为简单的数据存储需求提供了一种轻量级且灵活的替代方案。

主要变化:Kyval与原始Kyval Rust的主要区别在于使用LibSQL作为数据库后端,取代了SQLite。这一变化使Kyval在数据存储方面具有更大的灵活性。

用法

安装

cargo add kyval

与存储交互

use kyval::Kyval;

#[tokio::main]
async fn main() {

    let kyval_store = KyvalStoreBuilder::new()
        .uri(":memory:")
        .table_name("kv_store")
        .build()
        .await.unwrap();

    let keyv = Kyval::try_new(kyval_store).await.unwrap();

    kyval.set("number", 42).await.unwrap();
    kyval.set("number", 10).await.unwrap();
    kyval.set("array", vec!["hola", "test"]).await.unwrap();
    kyval.set("string", "life long").await.unwrap();

    match kyval.get("number").await.unwrap() {
        Some(number) => {
            let number: i32 = serde_json::from_value(number).unwrap();
            assert_eq!(number, 10);
        }
        None => assert!(false),
    }

    match kyval.get("string").await.unwrap() {
        Some(string) => {
            let string: String = serde_json::from_value(string).unwrap();
            assert_eq!(string, "life long");
        }
        None => assert!(false),
    }

    match kyval.get("array").await.unwrap() {
        Some(array) => {
            let array: Vec<String> = serde_json::from_value(array).unwrap();
            assert_eq!(array, vec!["hola".to_string(), "test".to_string()])
        }
        None => assert!(false),
    }

    match kyval.remove_many(&["number", "string"]).await {
        Ok(_) => {}
        Err(_) => assert!(false),
    }
}

许可证

根据您的选择,在Apache License 2.0MIT许可证下许可。

Unless you explicitly state otherwise, any contribution
intentionally submitted for inclusion in this project by you,
as defined in the Apache-2.0 license, shall be dual licensed
as above, without any additional terms or conditions.

本项目的版权归其贡献者所有。

有关更多信息,请参阅LICENSE-APACHELICENSE-MIT文件。


🤫 嘘!如果您喜欢我们的工作,您可以通过GitHub赞助来支持我们。

Made by

依赖项

~5–7.5MB
~134K SLoC