Rust 返回对Linkedlist元素的引用

Rust 返回对Linkedlist元素的引用,rust,lifetime,Rust,Lifetime,我想实现一个函数,它实例化一个新元素,将它添加到一个链表中,然后返回对它刚刚创建的元素的引用。这就是我想到的: use std::collections::LinkedList; struct Bar { ll: LinkedList<Foo> } struct Foo {} impl Bar { fn foo_alloc<'a>(&'a mut self) -> &Option<&'a mut Foo>

我想实现一个函数,它实例化一个新元素,将它添加到一个链表中,然后返回对它刚刚创建的元素的引用。这就是我想到的:

use std::collections::LinkedList;

struct Bar {
    ll: LinkedList<Foo>
}

struct Foo {}


impl Bar {
    fn foo_alloc<'a>(&'a mut self) -> &Option<&'a mut Foo> {
        let foo = Foo{};
        self.ll.push_back(foo);
        &self.ll.front_mut()
    }
}

问题不在于选项内部的引用,而在于选项对象本身。按值返回,而不是按引用返回

impl Bar {
    fn foo_alloc(&mut self) -> Option<&mut Foo> {
        let foo = Foo{};
        self.ll.push_back(foo);
        self.ll.front_mut()
    }
}

我还删除了生存期注释,因为默认的生存期推断在这里做了正确的事情。

是的,这就解决了它。self.ll.front_mut在尝试返回对该选项的引用之前,在堆栈和上创建了一个选项,该选项当然没有足够长的生存时间,因为它是在方法末尾删除的。这样说是否正确?是的,返回的选项是临时的,因此不能返回引用。
impl Bar {
    fn foo_alloc(&mut self) -> Option<&mut Foo> {
        let foo = Foo{};
        self.ll.push_back(foo);
        self.ll.front_mut()
    }
}