我尝试各种方法解决此问题时遇到了这个问题。
我正在尝试定义一个特征,该特征通过引用接受一个参数,然后返回Self
,如下所示:
struct X {}
trait CopyFrom {
fn copy_from(&x: X) -> Self;
}
我得到的错误是:
error[E0642]: patterns aren't allowed in functions without bodies
--> src/main.rs:5:18
|
5 | fn copy_from(&x: X) -> Self;
| ^^ pattern not allowed in function without body
如果我x
按值计算的话,它可以很好地编译(但这会消耗我不想要的参数)。
Rust参考说明如下:
参数的模式类型限于以下之一:
- 识别码
- mut识别
- _
- 和标识符
- &&标识符
从2018年版开始,函数或方法参数模式不再是可选的。另外,只要有身体,就允许所有不可辩驳的模式。没有主体,上面列出的限制仍然有效。
我无法找到其他任何可以解释为什么我无法定义通过引用接受参数的特征函数的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句