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

时间:2014-08-07 13:49:57

标签: rust lifetime

从我可以找到的各种来源中,给struct中的某个属性赋予生命,就像这样:

pub struct Event<'self> {
    name: String,
    execute: &'self |data: &str|
}

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

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

pub struct Event<'a> {
    name: String,
    execute: &'a |data: &str|
}

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

closure中声明struct的生命周期或该类型的任何类型的正确语法是什么?

1 个答案:

答案 0 :(得分:11)

更新为Rust 1.4。

闭包现在基于以下三个特征之一FnFnOnceFnMut

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

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