4 个版本
0.1.3 | 2022 年 2 月 22 日 |
---|---|
0.1.2 | 2022 年 2 月 22 日 |
0.1.1 | 2022 年 2 月 22 日 |
0.1.0 | 2022 年 2 月 22 日 |
#784 in 调试
9KB
86 代码行
Async Debug
async-debug
代码库使得调试包含需要异步调用以渲染的值的结构体和枚举变得容易。
例如
use tokio::sync::RwLock;
#[derive(Debug)]
struct MyStruct {
my_value: RwLock<String>
}
let my_struct = MyStruct { my_value: RwLock::from("Hello, world!".to_string()) };
println!("{:?}", my_struct );
打印类似的内容
MyStruct { my_value: RwLock { mr: 536870911, s: Semaphore { permits: 536870911 }, c: UnsafeCell { .. } } }
Async Debug 就是这样出现的
只需从 async_debug::AsyncDebug
派生,并添加适当的属性!
添加到 cargo.toml
[dependencies]
async-debug = "0.1.3"
use async_debug::AsyncDebug;
use tokio::sync::RwLock;
#[derive(AsyncDebug)]
struct MyStruct {
#[async_debug(async_call = RwLock::read, clone, ty = String)]
my_value: RwLock<String>
}
let my_struct = MyStruct { my_value: RwLock::from("Hello, world!".to_string()) };
assert_eq!(
format!("{:?}", my_struct.async_debug().await),
"MyStruct { my_value: \"Hello, world!\" }",
);
依赖项
~3.5MB
~63K SLoC