#derive-debug #debugging #extra #derive #customisable

derive-debug-extras

更可定制的 #[derive(Debug)]

5个不稳定版本

0.3.0 2024年3月1日
0.2.2 2023年1月27日
0.2.1 2023年1月24日
0.2.0 2021年12月19日
0.1.0 2021年11月29日

#16 in #extra

Download history 26/week @ 2024-04-15 27/week @ 2024-04-22 15/week @ 2024-04-29 30/week @ 2024-05-06 20/week @ 2024-05-13 22/week @ 2024-05-20 35/week @ 2024-05-27 30/week @ 2024-06-03 24/week @ 2024-06-10 26/week @ 2024-06-17 25/week @ 2024-06-24 4/week @ 2024-07-01 26/week @ 2024-07-08 30/week @ 2024-07-15 4/week @ 2024-07-22 75/week @ 2024-07-29

135 每月下载量
用于 4 个crate(2个直接使用)

MIT 许可证

10KB
140

派生调试额外功能

crates.io badge docs.rs badge

更可定制的 #[derive(Debug)]

添加三个选项

#[debug_single_tuple_inline]

use derive_debug_extras::DebugExtras;

#[derive(DebugExtras)]
#[debug_single_tuple_inline]
struct A(pub u32);

A 上启用详细调试,保留单行。

例如,对于 println!("{:#?}", vec![A(123), A(145), A(125),])

// Without #[debug_single_tuple_inline]
[
    A(
        123
    ),
    A(
        145
    ),
    A(
        125
    ),
]
// With #[debug_single_tuple_inline]
[
    A(123),
    A(145),
    A(125),
]

#[debug_single_tuple_inline] 也适用于枚举。对于具有多个字段或命名字段的未命名元组将失败。

要为此将默认值设置为具有单个字段的结构的详细格式化,可以使用 auto-debug-single-tuple-inline 功能来避免在结构体上每次都编写 #[debug_single_tuple_inline]

#[debug_ignore]

#[derive(DebugExtras)]
struct C {
    x: u32,
    #[debug_ignore]
    _y: bool,
}

在调试时忽略 _y 字段

#[debug_as_display]

#[derive(DebugExtras)]
struct D {
    #[debug_as_display]
    x: String,
}

x 字段打印出来,就像它被 Display 格式化一样

例如,对于 println!("{:#?}", D("Hello World".to_string()))

// With #[debug_as_display]
D(Hello World)
// Without #[debug_as_display]
D("Hello World")

依赖项

~335–780KB
~19K SLoC