这没有多大意义,因为无论返回,它都会返回相同的东西if let,但这是我遇到的问题的简要示例:
struct Data {
value: Option<i32>,
}
impl Data {
fn get(&mut self) -> Option<&mut i32> {
if let Some(val) = &mut self.value {
return Some(val);
}
return self.value.as_mut();
}
}
Run Code Online (Sandbox Code Playgroud)
此代码产生错误:
struct Data {
value: Option<i32>,
}
impl Data {
fn get(&mut self) -> Option<&mut i32> {
if let Some(val) = &mut self.value {
return Some(val);
}
return self.value.as_mut();
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么当第一个借项超出范围而又没有第二个借项发生时,这又是第二个可变借项。
该val变量在以后的范围if let,所以这是一个怎样次贷?第一次借用应该已经释放。
完全可以肯定的是,我什至if let用另一个方块包围了:
{
if let Some(val) …Run Code Online (Sandbox Code Playgroud) rust ×1