#debugging #macro-derive #basic #enums #shallow #variant #impl

macro shallow-debug

一个基本的Debug派生宏,可以在任何类型上使用

1个不稳定版本

0.1.0 2023年3月27日

#1582进程宏

MIT/Apache

8KB
104

浅调试

一个允许任何类型派生一个非常简单和“浅”的调试实现的crate。该实现只会打印枚举变体,而不是变体的内容。对于结构体,它只会打印结构体的名称,以及任何字段值。

这主要用于枚举,当变体本身已经是有用的信息时。由于没有打印内部值,它们不需要实现Debug,因此这也可以在高度泛型代码中非常有用,您只需要一个快速简单的方法来获取调试信息。

示例

#[derive(ShallowDebug)]
enum MyEnum<A, B, C> {
    A(A),
    B(B),
    C(C),
}

let value: MyEnum<i32, &str, usize> = MyEnum::A(123);
assert_eq!(format!("{value:?}"), "MyEnum::A(..)");

lib.rs:

浅调试

一个允许任何类型派生一个非常简单和“浅”的调试实现的crate。该实现只会打印枚举变体,而不是变体的内容。对于结构体,它只会打印结构体的名称,以及任何字段值。

这主要用于枚举,当变体本身已经是有用的信息时。由于没有打印内部值,它们不需要实现Debug,因此这也可以在高度泛型代码中非常有用,您只需要一个快速简单的方法来获取调试信息。

示例

#[derive(ShallowDebug)]
enum MyEnum<A, B, C> {
    A(A),
    B(B),
    C(C),
}

let value: MyEnum<i32, &str, usize> = MyEnum::A(123);
assert_eq!(format!("{value:?}"), "MyEnum::A(..)");

依赖项

~255–700KB
~17K SLoC