Rust编程从入门到实战
上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,
    }