Skip to content

dimpolo/partialdebug

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

partialdebug

github Crates.io docs.rs

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.

#![feature(debug_non_exhaustive)]
use partialdebug::non_exhaustive::PartialDebug;

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

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

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)");

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Derive Debug partially

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages