#debugging #print #pi

nightly pi_print_any

使用特化在不使用特质的限制下打印任何值(Rust 夜间频道)

3 个版本

0.1.2 2022 年 8 月 26 日
0.1.1 2022 年 7 月 5 日
0.1.0 2022 年 5 月 12 日

65#debug 中排名

Download history 39/week @ 2024-03-14 77/week @ 2024-03-21 93/week @ 2024-03-28 45/week @ 2024-04-04 42/week @ 2024-04-11 46/week @ 2024-04-18 48/week @ 2024-04-25 38/week @ 2024-05-02 39/week @ 2024-05-09 36/week @ 2024-05-16 40/week @ 2024-05-23 33/week @ 2024-05-30 28/week @ 2024-06-06 41/week @ 2024-06-13 54/week @ 2024-06-20 23/week @ 2024-06-27

每月下载量 152
用于 13 包(6 个直接使用)

MIT/Apache 许可

6KB
52 行代码(不包括注释)

输出没有特质的值(通过特化来找到正确的实现)

输出 impl Debug 类型的值的类型,输出 unimplDebug 的类型名。

例如

	#[derive(Debug)]
	struct A(usize);
	struct B(usize);
	fn main() {
		println_any!("{:?}", A(1)); // output: A(1)
		println_any!("{:?}", B(1)); // output: `pi_print_any::B`

		print_any!("{:?}", A(1)); // output: A(1)
		print_any!("{:?}", B(1)); // output: `pi_print_any::B`
	}

除了使用 print 和 println 输出外,还可以使用其他宏进行输出,out_any 允许您传递希望使用的输出宏

例如

	#[derive(Debug)]
	struct A(usize);
	struct B(usize);
	fn main() {
		out_any!(log::info, "{:?}", A(1)); // output: A(1)
		out_any!(log::info, "{:?}", B(1)); // output: `pi_print_any::B`
	}

lib.rs:

输出没有特质的值(通过特化来找到正确的实现)

输出 impl Debug 类型的值的类型,输出 unimplDebug 的类型名。

例如

#[derive(Debug)]
struct A(usize);
struct B(usize);
fn main() {
	println!("{:?}", A(1)); // output: A(1)
	println!("{:?}", B(1)); // output: `pi_print_any::B`
}

注意:这使用了实验性的 Rust 功能,因此它是实验性和不稳定的,并且具有所有 feature(specialization) 的问题。

无运行时依赖