6 stable releases
Uses old Rust 2015
1.0.5 | Jan 7, 2023 |
---|---|
1.0.3 | Aug 31, 2022 |
1.0.2 | Mar 14, 2022 |
1.0.1 | Oct 1, 2021 |
#192 in Debugging
260,574 downloads per month
Used in 70 crates
(17 directly)
13KB
78 lines
debug-ignore
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
Debug
by hand. derivative
has greater control over the behavior ofDebug
impls, at the cost of a compile-time proc-macro dependency.
Contributing
Pull requests are welcome! Please follow the code of conduct.
License
This project is available under the terms of either the Apache 2.0 license or the MIT license.
Dependencies
~160KB