我正在尝试创建一个 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));
}
}
两个问题:
- 有人可以解释如何
'a
正确使用以及这将如何工作/这意味着什么?而且我猜为什么我什至需要在这里度过一生(是因为我使用的是 Box)? - 我也很困惑为什么我必须使用
#[path="..."]
它,因为没有它,它会要求我将文件移动到src/lib/animal.rs
但是当我移动它时,它仍然不起作用。