上QQ阅读APP看书,第一时间看更新
3.2 详细输出
详细输出是Rust中很有特色的一种输出方式,它可以将“调试性”的信息打印出来。对于很多编译器来说,为了优化编译后的程序,一些编译时的信息,例如变量的名字,将不会出现在编译之后的程序中,所以这些信息不能被一个“函数”打印出来,只能在调试控制台中看见。但是Rust支持在编译时选择性地保留一些调试信息,这会使一些调试工作甚至非调试性工作变得十分简单。
#[derive(Debug)] struct Rectangle { width: u32, height: u32, } fn main() { let rect1 = Rectangle { width: 30, height: 50 }; println!("rect1 is {:?}", rect1); }
以上程序输出结果为:
rect1 is Rectangle { width: 30, height: 50 }
这段程序中有一个矩形类Rectangle,包含两个属性:width和height。主函数中通过特殊的代位符“{:?}”可以将结构体的细节输出。
注意:打印结构体的详细信息请在文件最上方编写“#[derive(Debug)]”语句。
如果想让打印出的结构体更好看,也可以用以下语句打印:
println!("rect1 is {:#?}", rect1);
“{:#?}”代位符打印出的结果是包含格式的:
rect1 is Rectangle { width: 30, height: 50, }