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 |
|
#530 在 数据结构
每月585次下载
在 12 crates 中使用
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