debug-ignore

Crates.iodebug-ignore
lib.rsdebug-ignore
version1.0.5
sourcesrc
created_at2021-10-01 23:22:08.313645
updated_at2023-01-07 23:41:38.252493
descriptionA newtype wrapper that causes a field to be skipped while printing out Debug output.
homepage
repositoryhttps://github.com/sunshowers-code/debug-ignore
max_upload_size
id459277
size35,181
Rain (sunshowers)

documentation

https://docs.rs/debug-ignore

README

debug-ignore

debug-ignore on crates.io Documentation (latest release) Documentation (main) License License

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 of Debug 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.

Commit count: 29

cargo fmt