6 releases (3 breaking)

0.6.1 Jan 22, 2024
0.6.0 Jan 21, 2024
0.5.1 Mar 11, 2023
0.5.0 Jun 12, 2020
0.3.0 Feb 1, 2020

#22 in Value formatting

Download history 5232/week @ 2023-12-23 6078/week @ 2023-12-30 9529/week @ 2024-01-06 11500/week @ 2024-01-13 12778/week @ 2024-01-20 12470/week @ 2024-01-27 11872/week @ 2024-02-03 14919/week @ 2024-02-10 17169/week @ 2024-02-17 14436/week @ 2024-02-24 16416/week @ 2024-03-02 17727/week @ 2024-03-09 15590/week @ 2024-03-16 15649/week @ 2024-03-23 17258/week @ 2024-03-30 14185/week @ 2024-04-06

64,733 downloads per month
Used in 37 crates (17 directly)

Apache-2.0 OR MIT

7KB
82 lines

custom_debug

Derive Debug with a custom format per field.

Example usage

Here is a showcase of custom_debugs features:

    use custom_debug::Debug;
    use std::fmt;

    #[derive(Debug)]
    struct Foo {
        #[debug(format = "{} things")]
        x: i32,
        #[debug(skip)]
        y: i32,
        #[debug(with = hex_fmt)]
        z: i32,
        #[debug(skip_if = Option::is_none)]
        label: Option<String>,
    }

    fn hex_fmt<T: fmt::Debug>(n: &T, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "0x{:02X?}", n)
    }

The resulting debug output would look something like this:

Foo {
    x: 42 things,
    z: 0xAB
}

Field attributes reference

Attributes within a section below are considered mutually exclusive.

Skip attributes

skip Unconditionally skips a field.
skip_if = path::to::function Skips a field if path::to::function(&field) returns true.

Format attributes

format = "format string {}" Formats a field using a format string. Must contain a placeholder ({}) with modifiers of your choice.
with = path::to::formatter Formats a field using path::to::formatter. The required signature is fn(&T, &mut std::fmt::Formatter) -> std::fmt::Result where T is a type compatible with the field's type (i.e. the function can be generic and coercions apply).

Dependencies

~1.2–1.6MB
~35K SLoC