Vector 从向量返回元素时出现错误E0495

Vector 从向量返回元素时出现错误E0495,vector,rust,lifetime,Vector,Rust,Lifetime,我一直在尝试用Rust创建一个简单的解释器。下面是一段代码片段 use std::vec::Vec; use std::option::Option; use std::borrow::Borrow; trait Data {} trait Instruction { fn run(&self, stack: &mut Vec<Box<Data>>) -> Option<&Data>; } struct Get {

我一直在尝试用Rust创建一个简单的解释器。下面是一段代码片段

use std::vec::Vec;
use std::option::Option;
use std::borrow::Borrow;

trait Data {}

trait Instruction {
    fn run(&self, stack: &mut Vec<Box<Data>>) -> Option<&Data>;
}

struct Get {
    stack_index: usize,
}

impl Instruction for Get {
    fn run(&self, stack: &mut Vec<Box<Data>>) -> Option<&Data> {
        Some(stack[self.stack_index].borrow())
    }
}

fn main() {}
我缺少什么?

如中所述,
stack[self.stack\u index]
正在按值返回切片中的值。然后尝试返回对局部变量的引用,如中所述,这是不允许的

实际上,您需要执行
一些(&*stack[self.stack\u index])
,这将取消对
框的引用,以获取
数据,然后重新引用它。因为您的实现不符合的规则,所以需要向trait方法和实现添加显式生存期:

fn run<'a>(&self, stack: &'a mut Vec<Box<Data>>) -> Option<&'a Data>

谢谢你的回答!但是如果我理解正确的话,@abologic你需要;我已经在回答中阐明了这一点。哦,是的,为这个愚蠢的错误感到抱歉,谢谢!
stack.get(self.stack_index).map(Box::as_ref)