9 个版本
0.1.2 | 2024年5月21日 |
---|---|
0.1.1 | 2023年10月11日 |
0.1.0 | 2023年7月11日 |
0.0.6 | 2023年3月24日 |
0.0.1 | 2022年9月10日 |
#893 在 Rust 模式
62 每月下载量
在 2 crate 中使用
23KB
445 行
对 derive(Debug) 和 derive(Display) 的更稳健和通用的实现。与标准库中的 derive(Debug) 版本不同,这些宏总会成功生成一个实现 - 即使成员没有实现 Debug/Display。在这种情况下,生成的实现将打印一个形式为 <TypeName>
的替换字符串。
use fmt_derive::Debug; // replacement for `use std::fmt::Debug;`
// a type that implements neither `Debug` nor `Display`
struct Unprintable;
#[derive(Debug, fmt_derive::Display)]
struct Printable {
// unprintable members will be printed as `<Type>`
unprintable: Unprintable,
// use `#[display(ignore)]` (or `#[debug(ignore]` respectively) to skip a member when printing
#[display(ignore)]
ignored: u32,
// use the `fmt` attribute to refer to both `Debug` and `Display` at once
#[fmt("{:#08X}", self.hex_number)]
hex_number: u32,
}
fn main() {
let printable = Printable{
hex_number: 0xDEADBEEF,
ignored: 42,
unprintable: Unprintable,
};
assert_eq!(format!("{:?}", printable), "Printable { unprintable: <Unprintable>, ignored: 42, hex_number: 0xDEADBEEF }");
assert_eq!(format!("{}", printable), "Printable { unprintable: <Unprintable>, hex_number: 0xDEADBEEF }");
}
no_std
此 crate 是 no_std
,可以从 no_std
和 std
上下文中使用,无需采取任何操作。
MSRV
当前的 MSRV 是 1.69.0。对于此项目,它主要受其依赖的少数依赖项驱动。
依赖项
~1.4–2MB
~41K SLoC