我无法从函数中获取值的所有权

时间:2019-04-05 07:29:23

标签: rust borrow-checker ownership

我定义了一个递归函数,该递归函数可从另一个函数创建树状结构。在函数内部创建的值无法取值。

我尝试了不同的方法来获取函数的所有权,返回值本身,将向量作为参数来存储值。

#[derive(Clone, Copy)]
pub enum Concept<'a> {
    Variable,
    Base(&'a str),
    ForAll(&'a str, &'a Concept<'a>),
}

pub fn normal_form_reduction<'a>(
    con: &Concept<'a>,
    container: &mut Vec<Concept<'a>>,
) -> Concept<'a> {
    match *con {
        // bases cases without recurrence
        Concept::Variable => Concept::Variable,
        Concept::Base(s) => Concept::Base(&*s),
        //...

        //first recursive call
        Concept::ForAll(s, c) => {
            let nc = normal_form_reduction(c, container);
            (*container).push(nc);
            Concept::ForAll(s, &nc)
        }
    }
}

预期编译。 获取:

error[E0515]: cannot return value referencing local variable `nc`
  --> src/lib.rs:22:13
   |
22 |             Concept::ForAll(s, &nc)
   |             ^^^^^^^^^^^^^^^^^^^---^
   |             |                  |
   |             |                  `nc` is borrowed here
   |             returns a value referencing data owned by the current function

错误“ E0515”不能解释我的错误。

0 个答案:

没有答案