すべてが特性を実装する構造体の 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));
}
}
2 つの質問:
- 誰かが
'a
適切に使用する方法と、これがどのように機能するか/それが何を意味するかを説明してもらえますか? また、なぜここでライフタイムが必要なのだと思いますか (Box を使用しているからでしょうか)。 #[path="..."]
また、それがないとファイルを移動するように求められるので、なぜ使用しなければならないのか混乱していますsrc/lib/animal.rs
が、移動しても機能しません。