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 在 调试 中
224,477 每月下载量
用于 62 个crate(17个直接使用)
13KB
78 行
debug-ignore
此库包含 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
。 derivative
对Debug
实现的行为有更大的控制权,但代价是编译时需要proc-macro依赖。
贡献
欢迎提交拉取请求!请遵循 行为准则。
许可证
本项目可在以下许可协议下获取:Apache 2.0 许可协议[Apache 2.0 license]或MIT 许可协议[MIT license]。
依赖项
~165KB