从我可以找到的各种来源,给一个属性的生命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]
什么是声明的一生语法正确closure的struct,或任何类型为此事?
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)