Why does adding try! to writeln! stop an unused-code compiler warning?
我遵循的是Rust by Example Docs,
并且收到了我不理解的编译器警告。
考虑以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | use std::fmt::{self, Display}; struct Matrix(f32, f32, f32, f32); impl Display for Matrix { fn fmt(&self, f : &mut fmt::Formatter) -> fmt::Result { try!(writeln!(f," ( {:.2}, {:.2} )", self.0, self.1)); write!(f," ( {:.2}, {:.2} )", self.2, self.3) } } fn main() { let m = Matrix(1f32,2f32,3f32,4f32); print!("{}", m); } |
这可以正确编译,并且可以正常工作,但是如果我们从第一个
1 | writeln!(f," ( {:.2}, {:.2} )", self.0, self.1); |
我收到此编译器警告:
1 2 | <std macros>:2:1: 2:54 warning: unused result which must be used, #[warn(unused_must_use)] on by default <std macros>:2 $ dst . write_fmt ( format_args ! ( $ ( $ arg ) * ) ) ) |
这是为什么? 编译器试图告诉我什么?
我在这里找到了
但我对它的理解还不够好,无法回答自己的问题。
rustc --version给我
您会注意到它们都返回
另一方面,