我目前正在学习Rust,但在创建一个简单的观察者来存储任意类型的回调时,我遇到了生命周期的困难。
我从一个基本结构体开始:
struct Signal<T> {
slots: Vec<|T|>
}
这让我得到了最初的生命周期错误。
signal_test.rs:7:16: 7:19 error: explicit lifetime bound required
signal_test.rs:7 slots: Vec<|T|>
^~~
error: aborting due to previous error
接下来我尝试添加一些生命周期限定符。
struct Signal<'r, T> {
slots: Vec<'r |T|>
}
这给我带来了一些新的错误。
signal_test.rs:7:12: 7:23 error: wrong number of lifetime parameters: expected 0, found 1 [E0107]
signal_test.rs:7 slots: Vec<'r |T|>
^~~~~~~~~~~
signal_test.rs:7:19: 7:22 error: explicit lifetime bound required
signal_test.rs:7 slots: Vec<'r |T|>
我没有找到足够的Rust生命周期文档,以提示我需要做什么来解决这个问题。这可能只是在Rust中不使用好的模式。希望能得到一些帮助和评论。
Box<Trait+'a>
。你只需要习惯它 :) - Vladimir Matveev