小编Joh*_*yer的帖子

第二次可变借款错误,只有一次可变借款

这没有多大意义,因为无论返回,它都会返回相同的东西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

2
推荐指数
1
解决办法
109
查看次数

标签 统计

rust ×1