ZhangHanDong / tao-of-rust-codes

《Rust编程之道》随书源码
https://ruststudy.github.io/tao_of_rust_docs/tao_of_rust/
MIT License
1.19k stars 172 forks source link

零成本抽象代码示例无法编译 #252

Closed zydxhs closed 4 years ago

zydxhs commented 4 years ago

页码与行数


代码错误

5.times(|| println!("Hello Rust"));  // 无法编译
2.days().from_now();                    // 无法编译

Rust版本

$ rustc -V
rustc 1.39.0 (4560ea788 2019-11-04)

错误信息

cargo build
   Compiling demo v0.1.0 (E:\work\rust\demo)
error[E0599]: no method named `days` found for type `{integer}` in the current scope
  --> src\main.rs:58:7
   |
58 |     2.days().from_new();
   |       ^^^^ method not found in `{integer}`

error[E0599]: no method named `times` found for type `{integer}` in the current scope
  --> src\main.rs:59:7
   |
59 |     5.times(|| println!("Hello Rust!"));
   |       ^^^^^ method not found in `{integer}`

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0599`.
error: could not compile `demo`.

To learn more, run the command again with --verbose.
ZhangHanDong commented 4 years ago

这个本来就是无法编译的,只是作为一种「Rust可以实现这种链式调用风格」的示例。

zydxhs commented 4 years ago

既然不能编译,我认为就不要写这样的示例放在这里,容易误导读者。或者明确告知读者,这里仅是示例说明,不能编译。

另外, 上面的两行Ruby代码,第二行也是错误的,无法运行。

ZhangHanDong commented 4 years ago

那是用于语法展示的,表示,你可以写出类似于那样的链式调用。