Crate partialdebug[][src]

Derive Debug for types where not all fields implement Debug.

This crate works on stable and with no_std. On nightly the unstable feature can be used for specialization based trait detection and/or .. formatting.

Placeholder with Type Info

use partialdebug::placeholder::PartialDebug;

#[derive(PartialDebug)]
struct Dog {
    legs: usize,
    eyes: usize,
    dna: DNA,
}

assert_eq!(format!("{:?}", Dog::new()), "Dog { legs: 4, eyes: 2, dna: DNA }");

Placeholder with Custom Text

use partialdebug::placeholder::PartialDebug;

#[derive(PartialDebug)]
#[debug_placeholder = "Unknown"]
struct Dog {
    legs: usize,
    eyes: usize,
    dna: DNA,
}

assert_eq!(format!("{:?}", Dog::new()), "Dog { legs: 4, eyes: 2, dna: Unknown }");

Non Exhaustive

Only available on nightly after setting the unstable feature.

Requires the debug_non_exhaustive feature to be enabled in user code.

Only available for structs with named fields.

Caveats

Trait detection for generic types requires specialization. To enable specialization based trait detection use a nightly compiler and enable the unstable feature.

use partialdebug::placeholder::PartialDebug;

#[derive(PartialDebug)]
struct Container<T>(T);

#[cfg(feature = "unstable")]
assert_eq!(format!("{:?}", Container(42)), "Container(42)");
#[cfg(not(feature = "unstable"))]
assert_eq!(format!("{:?}", Container(42)), "Container(T)");

Modules

no_specialization

Trait detection logic without using specialization.

placeholder

The placeholder version of PartialDebug

Structs

Placeholder

Placeholder struct for types that do not implement Debug