借贷搬家

时间:2018-07-23 16:49:28

标签: rust borrow-checker borrowing

以下代码创建一个结构,该结构包含对结构的引用,该结构最后移出该函数。我想借阅检查器会生气,因为我想,搬东西会杀死它的原始位置。我的问题是:在不更改结构定义的情况下,是否可以在另一个函数中构造引用该B的B和A,然后将它们返回到调用上下文?

#[derive(Debug)]
pub struct A<'a> {
    pub b: &'a B,
}

impl<'a> A<'a> {
    pub fn new(b: &'a B) -> A<'a> {
        A { b }
    }
}

#[derive(Debug)]
pub struct B {
    pub x: i32,
}

fn nested<'a>() -> (A<'a>, B) {
    let x = 0;
    let b = B { x };
    let a = A::new(&b);
    (a, b)
}

fn main() {
    let (a, b) = nested();
    println!("{:?}", a);
}

0 个答案:

没有答案