#fields #output #ignore #skip #printing #newtype

no-std debug-ignore

一个新类型包装器,在打印Debug输出时跳过字段

6个稳定版本

使用旧的Rust 2015

1.0.5 2023年1月7日
1.0.3 2022年8月31日
1.0.2 2022年3月14日
1.0.1 2021年10月1日

#158调试

Download history 74388/week @ 2024-04-23 58818/week @ 2024-04-30 67655/week @ 2024-05-07 68898/week @ 2024-05-14 57139/week @ 2024-05-21 55553/week @ 2024-05-28 55700/week @ 2024-06-04 61268/week @ 2024-06-11 61274/week @ 2024-06-18 64971/week @ 2024-06-25 43829/week @ 2024-07-02 59982/week @ 2024-07-09 58715/week @ 2024-07-16 56516/week @ 2024-07-23 50309/week @ 2024-07-30 48344/week @ 2024-08-06

224,477 每月下载量
用于 62 个crate(17个直接使用)

MIT/Apache

13KB
78

debug-ignore

debug-ignore on crates.io Documentation (latest release) Documentation (main) License License

此库包含 DebugIgnore,一个新类型包装器,在打印 Debug 输出时跳过字段。

示例

use debug_ignore::DebugIgnore;

// Some structs have many fields with large `Debug` implementations.
#[derive(Debug)]
struct InnerStructWithLotsOfDebugInfo {
    field: &'static str,
    // ...
}

#[derive(Debug)]
pub struct PublicStruct {
    inner: DebugIgnore<InnerStructWithLotsOfDebugInfo>,
}

impl PublicStruct {
    pub fn new() -> Self {
        Self {
            // DebugIgnore<T> has a `From<T>` impl for the inner type; you can also construct
            // one explicitly.
            inner: InnerStructWithLotsOfDebugInfo { field: "field", /* ... */ }.into(),
        }
    }
}

let x = PublicStruct::new();
assert_eq!(format!("{:?}", x), "PublicStruct { inner: ... }");

// Fields within inner can still be accessed through the Deref impl.
assert_eq!(x.inner.field, "field");

为什么?

某些结构体有许多字段,并且具有大量的 Debug 实现。查看大量通常不相关的 Debug 输出可能非常烦人。

DebugIgnore 是一种零成本、零编译时间的方式来实现跳过字段的 Debug 实现。

可选功能

serde:使用 #[serde(transparent)]serde 支持。

Rust版本支持

最低支持版本是 Rust 1.34,尽管这个crate可能可以用更旧的版本构建。这个crate过于简单,不需要更新的版本。

可选功能可能需要Rust的新版本。

替代方案

  • 手动实现 Debug
  • derivativeDebug 实现的行为有更大的控制权,但代价是编译时需要proc-macro依赖。

贡献

欢迎提交拉取请求!请遵循 行为准则

许可证

本项目可在以下许可协议下获取:Apache 2.0 许可协议[Apache 2.0 license]或MIT 许可协议[MIT license]

依赖项

~165KB