3 个版本
0.0.3 | 2023 年 6 月 2 日 |
---|---|
0.0.2 | 2023 年 5 月 13 日 |
0.0.1 | 2023 年 5 月 13 日 |
#1089 在 开发工具
用于 2 crates
13KB
158 行
README
jsonerr 帮助创建 json 错误
用法
use jsonerr::*;
fn main() {
let myjson = jsonerr!(code = "ERR001", message = "An error message");
println!("{:#?}", myjson);
}
返回
{
"iserr":true,
"err":{
"code":"ERR001",
"message":"An error message"
}
}
嵌入错误
use jsonerr::*;
fn main() {
let error = "NaN".parse::<u32>().unwrap_err();
let myjson = jsonerr!(
code = "ERR002",
message = "An error message",
origin = error // <-- 'std::error::Error' only
);
println!("{:#?}", myjson);
}
返回
{
"iserr":true,
"err":{
"code":"ERR003",
"message":"An error message",
"origin": "invalid digit found in string"
}
}
如果错误消息字符串类似于 json(例如 {"deep":"caused error","test":1}
)
{
"iserr":true,
"err":{
"code":"ERR003",
"message":"An error message",
"origin": {
"deep": "caused error",
"test": 1
}
}
}
嵌入负载
use jsonerr::*;
fn main() {
let myjson = jsonerr!(
code = "ERR002",
message = "An error message",
payload = serde_json::json!({ "more": "data" }) // <-- 'serde_json::Value' only
);
println!("{:#?}", myjson);
}
返回
{
"iserr":true,
"err":{
"code":"ERR003",
"message":"An error message",
"payload": { "more": "data" }
}
}
示例
cargo运行 --示例基本
为什么选择 jsonerr ?
- 当你需要一个始终包含
.meta
、.err
和.iserr
的 json 时 - 当你需要一个始终包含
.code
、.message
、.origin
、payload
的.err
时 - 当你需要一个可以快速嵌入的引发错误时
依赖
~0.7–1.4MB
~32K SLoC