This crate implements a more customizable version of #[derive(Debug)].
The usage is very similar to #[derive(Debug)] with a few extra customization options.
use derive_debug::Dbg;#[derive(Dbg)]structFoo{field_a:u32,#[dbg(placeholder = "...")]field_b:Vec<u32>,// will be printed as "field_b: ..."#[dbg(skip)]field_c:bool,// will be left out#[dbg(alias = "my_string")]field_d:u32,// will be printed as "my_string: 42"#[dbg(fmt = "{:#06X}")]field_e:u32,// will be printed with the specified format}use derive_debug::Dbg;#[derive(Dbg)]enumFoo{VariantA(u32,u32,u32),#[dbg(skip)]VariantB{a:u32,b:bool},// Will be printed as "VariantB"// same options available as for struct fieldsVariantC{a:u32,#[dbg(placeholder = "...")]b:bool}}#[dbg(skip)]completely omits a field in the output
use derive_debug::Dbg;#[derive(Dbg)]structFoo{field_a:bool,#[dbg(skip)]field_b:u32,}// Outputs: Foo { field_a: true }#[dbg(placeholder = "xyz")]will printxyzinstead of the actual contents of a field
use derive_debug::Dbg;#[derive(Dbg)]structFoo{field_a:bool,#[dbg(placeholder = "...")]field_b:u32,}// Outputs: Foo { field_a: true, field_b: ... }#[dbg(alias = "some_alias")]will printsome_aliasas field name instead of the real name
use derive_debug::Dbg;#[derive(Dbg)]structFoo{field_a:bool,#[dbg(alias="not_field_b")]field_b:u32,}// Outputs: Foo { field_a: true, not_field_b: 42 }#[dbg(fmt = "{:#06X}")]will print the field with the specified format
use derive_debug::Dbg;#[derive(Dbg)]structFoo{field_a:bool,#[dbg(fmt = "{:#06X}")]field_b:u32,}// Outputs: Foo { field_a: true, field_b: 0x002A }#[dbg(formatter = "my_func")]will print the field using the specified function.
The function has to return a type that can be formatted using "{}"
use derive_debug::Dbg;#[derive(Dbg)]structFoo(u32,#[dbg(formatter = "fmt_not_zero")]u32);fnfmt_not_zero(v:&u32) -> &'staticstr{if*v == 0{"0"}else{"not 0"}}// Outputs: Foo(42, not 0)#[dbg(skip)]only prints the name of the variant and omits its contents
use derive_debug::Dbg;#[derive(Dbg)]enumFoo{#[dbg(skip)]SomeVariant{a:bool,b:u32},}// Outputs: SomeVariant#[dbg(alias = "some_alias")]will usesome_aliasas variant name instead of the real name
use derive_debug::Dbg;#[derive(Dbg)]enumFoo{#[dbg(alias = "NotSomeVariant")]SomeVariant{a:bool,b:u32},}// Outputs: NotSomeVariant { a: true, b: 42 }#[dbg(alias = "MyAlias")]will useMyAliasas struct name instead of the real name
use derive_debug::Dbg;#[derive(Dbg)]#[dbg(alias = "NotFoo")]structFoo{field_a:bool,field_b:u32,}// Outputs: NotFoo { field_a: true, not_field_b: 42 }