Crate debug_ignore
source · [−]Expand description
This library contains DebugIgnore, a newtype wrapper that causes a field to be skipped while
printing out Debug output.
Examples
use debug_ignore::DebugIgnore;
// Some structs have many fields with large `Debug` implementations.
#[derive(Debug)]
struct InnerStructWithLotsOfDebugInfo {
field: &'static str,
// ...
}
#[derive(Debug)]
pub struct PublicStruct {
inner: DebugIgnore<InnerStructWithLotsOfDebugInfo>,
}
impl PublicStruct {
pub fn new() -> Self {
Self {
// DebugIgnore<T> has a `From<T>` impl for the inner type; you can also construct
// one explicitly.
inner: InnerStructWithLotsOfDebugInfo { field: "field", /* ... */ }.into(),
}
}
}
let x = PublicStruct::new();
assert_eq!(format!("{:?}", x), "PublicStruct { inner: ... }");
// Fields within inner can still be accessed through the Deref impl.
assert_eq!(x.inner.field, "field");Why?
Some structs have many fields with large Debug implementations. It can be really annoying to
go through a ton of usually irrelevant Debug output.
DebugIgnore is a zero-cost, zero-compile-time way to achieve a Debug impl that skips over a
field.
Optional features
serde: serde support with #[serde(transparent)].
Rust version support
The MSRV is Rust 1.34 though this crate likely builds with older versions. This crate is too trivial to require anything more recent.
Optional features may require newer versions of Rust.
Alternatives
- Implement
Debugby hand. derivativehas greater control over the behavior ofDebugimpls, at the cost of a compile-time proc-macro dependency.
Structs
A newtype wrapper that causes the field within to be ignored while printing out
Debug output.