Rust中的函数向量

Eri*_*c Y 5 rust

我目前正在学习Rust,并且在创建一个简单的观察器来存储任意类型的回调的同时,我在生命周期上苦苦挣扎。

我从一个基本的结构开始

struct Signal<T> {
    slots: Vec<|T|>
}
Run Code Online (Sandbox Code Playgroud)

这给了我最初的寿命错误

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
Run Code Online (Sandbox Code Playgroud)

因此,接下来我尝试添加一些生命周期说明符。

struct Signal<'r, T> {
    slots: Vec<'r |T|>
}
Run Code Online (Sandbox Code Playgroud)

这给我一些新的错误

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|>
Run Code Online (Sandbox Code Playgroud)

我还没有找到足够的防锈寿命文档来提示需要采取哪些措施来解决此问题。可能只是这不是在Rust中使用的好模式。一些帮助和意见,将不胜感激。

Ano*_*ous 4

尝试使用这个:

struct Signal<'r, T> {
    slots: Vec<|T|: 'r>
}
Run Code Online (Sandbox Code Playgroud)

  • @EricY,然而,当前的闭包将在不久的将来被删除,以支持未装箱的闭包,因此这一点语法可能会完全消失。 (2认同)