4个版本 (2个重大变更)

0.2.0 2021年3月4日
0.1.1 2020年11月4日
0.1.0 2020年10月30日
0.0.1 2020年10月28日

#18#non

Download history 31/week @ 2024-03-11 28/week @ 2024-03-18 44/week @ 2024-03-25 55/week @ 2024-04-01 27/week @ 2024-04-08 41/week @ 2024-04-15 75/week @ 2024-04-22 89/week @ 2024-04-29 37/week @ 2024-05-06 30/week @ 2024-05-13 36/week @ 2024-05-20 27/week @ 2024-05-27 23/week @ 2024-06-03 23/week @ 2024-06-10 27/week @ 2024-06-17 46/week @ 2024-06-24

每月下载量 121
6 个crate中使用 (通过 partialdebug)

MIT/Apache

13KB
299

partialdebug

github Crates.io docs.rs

为不是所有字段都实现了Debug的类型派生Debug。

此crate在稳定版和no_std下工作。在nightly版本中,可以使用unstable功能来实现基于特化的特性和/或..格式化。

带类型信息的占位符

use partialdebug::placeholder::PartialDebug;

#[derive(PartialDebug)]
struct Dog {
    legs: usize,
    eyes: usize,
    dna: DNA,
}

assert_eq!(format!("{:?}", Dog::new()), "Dog { legs: 4, eyes: 2, dna: DNA }");

带自定义文本的占位符

use partialdebug::placeholder::PartialDebug;

#[derive(PartialDebug)]
#[debug_placeholder = "Unknown"]
struct Dog {
    legs: usize,
    eyes: usize,
    dna: DNA,
}

assert_eq!(format!("{:?}", Dog::new()), "Dog { legs: 4, eyes: 2, dna: Unknown }");

非穷尽

仅在设置unstable功能后的nightly版本中可用。

需要用户代码中启用debug_non_exhaustive功能。

仅适用于具有命名字段的struct。

#![feature(debug_non_exhaustive)]
use partialdebug::non_exhaustive::PartialDebug;

#[derive(PartialDebug)]
struct Dog {
    legs: usize,
    eyes: usize,
    dna: DNA,
}

assert_eq!(format!("{:?}", Dog::new()), "Dog { legs: 4, eyes: 2, .. }");

注意事项

泛型类型的特性检测需要特化。要启用基于特化的特性检测,请使用nightly编译器并启用unstable功能。

use partialdebug::placeholder::PartialDebug;

#[derive(PartialDebug)]
struct Container<T>(T);

#[cfg(feature = "unstable")]
assert_eq!(format!("{:?}", Container(42)), "Container(42)");
#[cfg(not(feature = "unstable"))]
assert_eq!(format!("{:?}", Container(42)), "Container(T)");

许可证

根据您的选择,在Apache许可证,版本2.0MIT许可证下许可。
除非您明确声明,否则您有意提交给此crate的任何贡献,根据Apache-2.0许可证定义,将根据上述许可双重许可,不附加任何其他条款或条件。

依赖关系

~1.5MB
~35K SLoC