我有以下方法,我得到了let mut res = 1.0
的unused_assignment警告:
fn my_func(pld: &f64, lambda: &[f64;NUMF]) -> [f64;NUMF] {
let mut result = [0.0; NUMF];
for i in 0..NUMF{
let pdrel = pld / lambda[i];
let mut res = 1.0;
if pdrel >= 0.0 {
res = 1.0;
} else {
res = 1.0 - (7.5 * pdrel.abs()).sqrt();
if res >= 0.0 {
} else {
res = 0.0;
}
}
result[i] = res;
}
result
}
我知道我可以避免展示。但是我怎样才能写出更“正确”的代码来避免这个警告呢?
1条答案
按热度按时间2skhul331#
永远不要使用
res
的first赋值。这就是为什么Rustc在抱怨。您在下面if-else语句的所有分支中都赋值了它,因此永远不会阅读您赋值的默认1.0
。您可以删除赋值,rustc将停止向您发出警告:或者,你可以依赖Rust中每个块都有一个返回值的事实,所以你可以直接从if-else块返回值。然后你不必让
res
可变,你可能更喜欢: