gpt4 book ai didi

rust - 如何将生命周期应用于 VecDeque>?

转载 作者:行者123 更新时间:2023-11-29 08:19:44 25 4
gpt4 key购买 nike

我正在尝试创建一个 VecDeque 结构,这些结构都实现了 Animal 特征。这段代码有效,但我不明白为什么添加 ' static 可以修复它以及如何让它使用 'a 代替。

pub trait Animal {
fn says(self) -> Option<String>;
}

use std::collections::VecDeque;

pub struct Zoo {
list: VecDeque<Box<dyn Animal>>,
}

impl Zoo {
pub fn new() -> Zoo {
Zoo {
list: VecDeque::new(),
}
}

pub fn add<T>(&mut self, animal: T)
where
T: Animal + 'static,
{
self.list.push_back(Box::new(animal));
}
}

两个问题:

  1. 有人可以解释一下如何正确使用 'a 以及它是如何工作的/它意味着什么?而且我猜为什么我什至需要在这里度过一生(是因为我在使用 Box)吗?
  2. 我也很困惑为什么我必须使用 #[path="..."] 因为没有它,它会要求我将文件移动到 src/lib/animal .rs 但是当我移动它时,它仍然不起作用。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com