Rust 将生存期传递给结构

Rust 将生存期传递给结构,rust,reference,traits,lifetime,Rust,Reference,Traits,Lifetime,我有这样的代码: pub trait Action { fn execute(&self); } struct AddAction<'a> { rpn_calculator: &'a RpnCalculator } struct DeductAction<'a> { rpn_calculator: &'a RpnCalculator } impl Action for DeductAction<'_> {

我有这样的代码:

pub trait Action {
    fn execute(&self);
}

struct AddAction<'a> {
    rpn_calculator: &'a RpnCalculator
}

struct DeductAction<'a> {
    rpn_calculator: &'a RpnCalculator
}

impl Action for DeductAction<'_> {
    fn execute(&self) {
        // ...
    }
}

impl Action for AddAction<'_> {
    fn execute(&self) {
        // ...
    }
}

impl<'a> RpnCalculator {
    fn actions(&self) -> Vec<Box<dyn Action + 'a>> {
        let mut actions: Vec<Box<dyn Action + 'a>> = vec![
            Box::new(AddAction { rpn_calculator: &self })
            Box::new(AddAction { rpn_calculator: &self })
            // ...
        ];
        // ...
        actions
    }
}

因此,我在向量声明中有
'a
,但它仍然不起作用。

您可能应该使用
fn操作(&'a self)
,因为生命周期 在
dyn Action+中使用的
'a
与生命周期相关
这是否回答了您的问题?
Box::new(AddAction { rpn_calculator: &self })