小编mcd*_*993的帖子

在&mut self方法中展开成员变量时,不能移出借用的内容

我试图在Rust中创建一个Disjoint-Set数据结构。相关代码为:

pub struct Set<'a, T: 'a> {
    rank: u32,
    value: T,
    parent: Option<&'a mut Set<'a, T>>,
}

impl<'a, T> Set<'a, T> {
    pub fn find(&'a mut self) -> &'a mut Set<'a, T> {
        match self.parent {
            None => self,
            Some(mut p) => {
                self.parent = Some(p.find());
                self.parent.unwrap()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

pub struct Set<'a, T: 'a> {
    rank: u32,
    value: T,
    parent: Option<&'a mut Set<'a, T>>,
}

impl<'a, T> Set<'a, T> {
    pub fn find(&'a mut self) -> &'a …
Run Code Online (Sandbox Code Playgroud)

mutable ownership rust borrow-checker

5
推荐指数
1
解决办法
3418
查看次数

标签 统计

borrow-checker ×1

mutable ×1

ownership ×1

rust ×1