3 个版本
0.1.2 | 2021 年 9 月 16 日 |
---|---|
0.1.1 | 2021 年 7 月 15 日 |
0.1.0 | 2021 年 6 月 29 日 |
#257 in 值格式化
10KB
69 行
fmt_ext
为外部类型提供简单接口,用于自定义实现 Debug 和 Display 特性。
以下示例展示了如何为切片实现自定义的调试格式化,并额外打印其长度。
use std::{fmt, marker::PhantomData};
use fmt_ext::{debug::*, DebugExt};
// Create a type that will implement custom debug...
struct SliceWithLenDebug<T>(PhantomData<T>);
// Implement custom debug...
impl<T> CustomDebug for SliceWithLenDebug<T>
where
T: fmt::Debug,
{
type Target = [T];
fn fmt_target(target: &Self::Target, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "Slice {{ len: {}, items: {:?} }}", target.len(), target)
}
}
// Attach custom debug implementation to the target type...
impl<T> AttachDebug<SliceWithLenDebug<T>> for [T] {}
// Look! Now we have just call `debug` method on the target type...
fn main() {
let numbers = [0, 1, 2, 3];
println!("{:?}", numbers.debug());
let strings = vec!["I", "am", "a", "custom", "debug"];
println!("{:?}", strings.debug());
}
所有示例都在 此目录 中。
支持 #![no_std]
fmt_ext
默认支持 #![no_std]
模式。
许可证
fmt_ext
根据 MIT 许可证分发。