我一直在按照Rust 示例进行操作,但无法实现结构的调试输出(Matrix在下面的代码中)。
首先,这是版本;
\n当我尝试执行 “元组”步骤的“活动”部分的第一个活动所要求的操作时;
\n\n\n“将 fmt::Display 特征添加到上面示例中的 Matrix 结构中”
\n
我通过 Cargo 创建了一个新的 Rust 项目并创建了这样的结构;
\n$ROOT\n\xe2\x94\x9c- Cargo.toml\n\xe2\x94\x94- src\n \xe2\x94\x9c- main.rs\n \xe2\x94\x94- mytuples2.rs\nRun Code Online (Sandbox Code Playgroud)\n// src/main.rs\n\nmod mytuples2;\n\nfn main() {\n mytuples2::run();\n}\nRun Code Online (Sandbox Code Playgroud)\n和
\n// src/mytuples2.rs\n\nuse std::fmt;\n\n// The following struct is for the activity.\n#[derive(Debug)]\nstruct Matrix(f32, f32, f32, f32);\n\nimpl fmt::Display for Matrix {\n fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {\n write!(f, "(({}) ({})\\n ({})({}))", self.0, self.1, self.2, self.3)\n }\n}\n\npub fn run() {\n let matrix = Matrix(1.1, 1.2, 2.1, 2.2);\n println!("{:?}", matrix);\n}\nRun Code Online (Sandbox Code Playgroud)\n但无法产生以下输出;
\n((1.1) (1.2)\n (2.1) (2.2))\nRun Code Online (Sandbox Code Playgroud)\n我究竟做错了什么?请帮助我,因为我是新手。谢谢。
\nPS:相反,它写的是Matrix(1.1, 1.2, 2.1, 2.2)
尽管这是我的错,我还是要回答;
#[derive(Debug)]在结构定义之前删除并将 impl 更改为impl fmt::Debug for Matrix {(而不是impl fmt::Display for Matrix {)解决了这个问题。
无需更改"{:?}"为,"{}"因为目的是以调试格式打印结构。