我对 Rust 比较陌生。结果证明这个问题很长,所以我将从底线开始: 您更喜欢哪种解决方案?你有什么想法或意见吗?
我的代码无法编译,因为第 6 ( prev = curr) 行和第 12 ( bar(...)) 行使用了编译器怀疑可能未初始化的变量。作为程序员,我知道没有理由担心,因为第 6 行和第 12 行不会在第一次迭代期间运行。
let mut curr: Enum;
let mut prev: Enum;
for i in 0..10 {
if i > 0 {
prev = curr;
}
curr = foo();
if i > 0 {
bar(&curr, &prev);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道您对编译器的了解是有限的。所以我想出了 3 种不同的方法来回答语言的安全限制。
1)初始化并停止想太多
我可以用任意值初始化变量。风险在于维护者可能会错误地认为那些最初的、希望未使用的值具有某些重要意义。第 1-2 行将变为:
let mut curr: Enum = Enum::RED; // Just an arbitrary value!
let mut prev: Enum = Enum::BLUE; // …Run Code Online (Sandbox Code Playgroud)