以下代码创建一个结构,该结构包含对结构的引用,该结构最后移出该函数。我想借阅检查器会生气,因为我想,搬东西会杀死它的原始位置。我的问题是:在不更改结构定义的情况下,是否可以在另一个函数中构造引用该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);
}