有可能使这项工作吗?我本来想看看是否可以重新定义true
,然后看到true
实际上是一个关键字。
是否可以“修复”模式错误并获得“您无法分配关键字错误”?
fn main() {
let true = false;
}
我得到:
error[E0005]: refutable pattern in local binding: `false` not covered
--> src/main.rs:2:9
|
2 | let true = false;
| ^^^^ pattern `false` not covered
答案 0 :(得分:5)
错误消息没有问题。您在let
绑定中使用refutable pattern,而let
仅允许使用不可辩驳的模式。
换句话说,当您这样做时:
let variable = value
您没有为变量分配值。您正在创建一个绑定,其中左侧与右侧的内容匹配。这应该是无可辩驳的模式,因为匹配必须始终成功。
答案 1 :(得分:2)
我不确定您要做什么或为什么要 去做!如果一种语言允许您重新定义true
和false
,大多数人会认为这是设计缺陷,而且我敢肯定,这至少是The Daily WTF的一部分。 >
是否可以“修复”模式错误并获得“您无法分配关键字错误”?
常量定义不允许使用模式,因此通过尝试将true
重新定义为const
可以得到一个不同的错误:
const true: bool = false;
哪个会产生与您所经历的错误更相似的错误:
error: expected identifier, found keyword `true`
--> src/main.rs:1:7
|
1 | const true: bool = false;
| ^^^^ expected identifier, found keyword