我目前正在学习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中使用的好模式。一些帮助和意见,将不胜感激。

最佳答案

尝试使用此:

struct Signal<'r, T> {
    slots: Vec<|T|: 'r>
}

10-02 02:29
查看更多