声明结构中闭包的生命周期

nat*_*ore 11 lifetime rust

从我可以找到的各种来源,给一个属性的生命struct将如下所示:

pub struct Event<'self> {
    name: String,
    execute: &'self |data: &str|
}
Run Code Online (Sandbox Code Playgroud)

&'self现在不推荐使用生命周期.当声明一个属性是一个闭包类型时,编译器告诉我它需要一个生命周期说明符,但我找不到一个有闭包作为结构属性的示例.

这就是我目前正在尝试的:

pub struct Event<'a> {
    name: String,
    execute: &'a |data: &str|
}
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误: error: missing lifetime specifier [E0106]

什么是声明的一生语法正确closurestruct,或任何类型为此事?

A.B*_*.B. 11

更新为Rust 1.4.

现在闭包是基于以下三种特质,Fn,FnOnce,和FnMut.

闭包的类型不能精确定义,我们只能将泛型类型绑定到闭包特征之一.

pub struct Event<F: Fn(&str) -> bool> {
    name: String,
    execute: F
}
Run Code Online (Sandbox Code Playgroud)

  • 不对称有些不和谐:/ (4认同)