8

我写了这个简单的程序:

trait Command<T> {                                                                                                      
    fn execute(&self, &mut T);                                                                                          
}                                                                                                                       

fn main() {                                                                                                             
    let x = 0;                                                                                                          
}    

我编译了这个rustc --edition=2018 main.rs并收到错误消息:

error: expected one of `:` or `@`, found `)`
 --> main.rs:2:29
  |
2 |     fn execute(&self, &mut T);
  |                             ^ expected one of `:` or `@` here

编译通过rustc --edition=2015 main.rsorrustc main.rs不会导致此错误,尽管有一些警告。

这段代码有什么问题?

4

1 回答 1

9

匿名特征参数已在 2018 版中删除:不再有匿名特征参数

如果要忽略参数,请_:在前面添加:&mut T

trait Command<T> {
    fn execute(&self, _: &mut T);
}

使用作品编译rustc main.rs,因为它默认为--edition=2015.


事实上,如果你把你的货物放在main.rs一个新的 Cargo 项目中,然后从 中删除edition = "2018"Cargo.toml然后运行

cargo fix --edition

然后 Cargo 会自动添加缺失的内容_:。请参阅将现有项目转换为新版本

于 2019-02-09T15:19:46.877 回答