Crates.io | maybe-debug |
lib.rs | maybe-debug |
version | 0.1.0 |
source | src |
created_at | 2021-09-27 02:08:25.038088 |
updated_at | 2021-09-27 02:08:25.038088 |
description | impl Debug for Any (via specialization) |
homepage | |
repository | https://github.com/Techcable/rust-maybe-debug |
max_upload_size | |
id | 456740 |
size | 31,699 |
Implement Debug
for anything via specialization.
Lets say you have the following function and you want
to insert a dbg!()
statement inside the loop.
fn sort<T>(target: &mut [T]) {
for (i, val) in target.iter().enumerate() {
dbg!(i);
// various sorting goodness
dbg!(i, val); // ERROR: T is not Debug
}
}
You can use maybe_debug::maybe_debug()
to work around this.
If T
is Debug
it will 'cast' it. If T
is !Debug, it will
fallback to a reasonable default (printing the type name).
fn sort<T>(target: &mut [T]) {
for (i, val) in target.iter().enumerate() {
maybe_debug::dbg!(i);
// various sorting goodness
maybe_debug::dbg!(i, val); // On nightly, will specialize if 'T: Debug'
}
}
This has a fallback to work on stable Rust (without specialization).
In that case, the "cast" always fails and maybe_debug
will unconditionally
use the fallback.