#debugging #derive-debug #field #per #format #skip #formatter

custom_debug_derive

根据字段自定义格式派生Debug

15个版本

0.6.1 2024年1月22日
0.5.1 2023年3月11日
0.5.0 2020年6月12日
0.4.0 2020年2月1日
0.1.4 2018年11月27日

969过程宏

Download history 16918/week @ 2024-03-14 17620/week @ 2024-03-21 17464/week @ 2024-03-28 17253/week @ 2024-04-04 16048/week @ 2024-04-11 14174/week @ 2024-04-18 12549/week @ 2024-04-25 12104/week @ 2024-05-02 14442/week @ 2024-05-09 13723/week @ 2024-05-16 11444/week @ 2024-05-23 15716/week @ 2024-05-30 11555/week @ 2024-06-06 11775/week @ 2024-06-13 10641/week @ 2024-06-20 6999/week @ 2024-06-27

43,836 每月下载量
60 crate(12 个直接)中使用

Apache-2.0 OR MIT

24KB
554 代码行

custom_debug

根据字段自定义格式派生Debug

示例用法

以下是custom_debug功能的展示

    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)
    }

生成的调试输出将类似于以下内容

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

字段属性参考

以下部分的属性被认为是相互排斥的。

跳过属性

skip 无条件跳过一个字段。
skip_if= path::to::function 如果 path::to::function(&field) 返回 true,则跳过一个字段。

格式属性

format= "格式化字符串 {}" 使用格式化字符串格式化一个字段。必须包含一个占位符({})以及您选择的修饰符。
with= path::to::formatter 使用 path::to::formatter 格式化字段。所需的签名是 fn(&T, &mut std::fmt::Formatter) -> std::fmt::Result 其中 T 是与字段类型兼容的类型(即函数可以是泛型,并适用强制转换)。

依赖项

~1.1–1.6MB
~34K SLoC