4 releases
0.1.3 | Feb 22, 2022 |
---|---|
0.1.2 | Feb 22, 2022 |
0.1.1 | Feb 22, 2022 |
0.1.0 | Feb 22, 2022 |
#849 in Debugging
9KB
86 lines
Async Debug
The async-debug
crate makes it easy to debug structs and enums containing
values that require an async call to render.
For example:
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 );
Prints something like:
MyStruct { my_value: RwLock { mr: 536870911, s: Semaphore { permits: 536870911 }, c: UnsafeCell { .. } } }
Along comes Async Debug
Just derive from async_debug::AsyncDebug
and add the appropriate attribute!
Add to 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!\" }",
);
Dependencies
~3MB
~60K SLoC