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 |
Structs
Placeholder | Placeholder struct for types that do not implement Debug |