#version #cbsk #locked #cargo #callback #tokio #locking

cbsk_base

cbsk_base 是一个受保护的 cargo 包版本

14 个版本 (稳定)

新版本 2.0.0 2024年8月21日
1.3.11 2024年8月19日
1.3.10 2024年7月26日
0.1.8 2024年4月2日
0.1.4 2023年12月27日

#530数据结构

Download history 1/week @ 2024-05-02 306/week @ 2024-05-09 211/week @ 2024-05-16 59/week @ 2024-05-23 18/week @ 2024-05-30 309/week @ 2024-06-06 71/week @ 2024-06-13 21/week @ 2024-06-20 177/week @ 2024-06-27 22/week @ 2024-07-04 25/week @ 2024-07-11 158/week @ 2024-07-18 228/week @ 2024-07-25 48/week @ 2024-08-01 16/week @ 2024-08-08 291/week @ 2024-08-15

每月585次下载
12 crates 中使用

MIT/Apache

22KB
351

cbsk_base 是一个受保护的 cargo 包版本
你可以使用 cbsk_base 锁定常用的 cargo 包版本
cbsk_base 还支持一些自定义特质,如 ToJson、FromJson 以及一些宏

当前锁定版本

名称 git 版本
tokio github 1.39.3
anyhow github 1.0.86
once_cell github 1.19.0
serde github 1.0.208
serde_json github 1.0.125
log github 0.4.22
async-trait github 0.1.81
async-recursion github 1.1.1
parking_lot github 0.12.3
fastdate github 0.3.32

serde 示例

use serde_derive_json,
结构体实现 Serialize,将自动实现 ToJson
结构体实现 Deserialize,将自动实现 FromJson

Cargo.toml 文件

cbsk_base = { version = "2.0.0", features = ["serde_derive_json"] }

main.rs 文件

use cbsk_base::json::from_json::FromJson;
use cbsk_base::json::to_json::ToJson;
use cbsk_base::serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Default, Debug)]
#[serde(crate = "cbsk_base::serde")]
struct A {
    data: String,
}

fn main() {
    let a = A::default();
    let json = a.to_json();
    println!("a is {json:?}");// a is Ok(Object {"data": String("")})

    let a = A::from_json(json.unwrap());
    println!("a is {a:?}");// a is Ok(A { data: "" })
}

宏示例

Cargo.toml 文件

cbsk_base = { version = "2.0.0", features = ["macro", "anyhow"] }

main.rs 文件

use cbsk_base::anyhow;

fn main() {
    let a = try_get_option();
    println!("a is {a:?}");// a is Ok("hello world")
    exec_option();
}

fn try_get_option() -> anyhow::Result<String> {
    let a = Some("hello world".to_string());
    // match Option if is Some,
    // will be return value if is Nome,
    // will be return custom value and exit method
    Ok(cbsk_base::match_some_return!(a,Err(anyhow::anyhow!("a is none"))))
}

fn exec_option() {
    let a = Some("hello world".to_string());
    // match Option if is Some,
    // will be return value if is Nome,
    // will be return custom value
    let a = cbsk_base::match_some_exec!(a,{
        // do something, you can exit method, or break String
        println!("a is None");// will not output, because a not None
        return;
    });
    println!("a is {a}");// a is hello world
}

root_path 示例

Cargo.toml 文件

cbsk_base = { version = "2.0.0", features = ["root_path"] }

main.rs 文件

fn main() {
    // print the path where the program is located
    let root_path = cbsk_base::root_path();
    println!("root path is {root_path}");
}

依赖项

~0–8.5MB
~65K SLoC