从我能找到的各种来源来看,给一个struct美元的房产一辈子都是这样做的:

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

现在不推荐使用&'self生命周期 .当将一个属性声明为闭包类型时,编译器告诉我它需要一个生存期说明符,但我在任何地方都找不到将闭包作为 struct 属性的示例.

这就是我目前正在try 的:

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

但我得到了以下错误:error: missing lifetime specifier [E0106]

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

推荐答案

更新至Rust 1.4.

闭包现在基于三个特征之一,FnFnOnceFnMut.

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

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

Rust相关问答推荐

如何从Rust记录WASM堆内存使用情况?

使用Clap时如何将String作为Into Str参数传递?

你是如何在铁 rust 一侧的金牛座获得应用程序版本的?

我应该将哪些文件放入我的GitHub存储库

如何go 除多余的(0..)在迭代中,当它不被使用时?

在 Rust 中查找向量中 dyn struct 的索引

我可以禁用发布模式的开发依赖功能吗?

有什么方法可以通过使用生命周期来减轻嵌套生成器中的当生成器产生时borrow 可能仍在使用错误?

Rust 中的生命周期:borrow 的 mut 数据

Rust 中的方法调用有什么区别?

Rust/Serde/HTTP:序列化`Option`

为什么 Rust 允许写入不可变的 RwLock?

仅当满足外部条件时如何添加到 actix web 的路由

Abortable:悬而未决的期货?

以下打印数组每个元素的 Rust 代码有什么问题?

为什么这个值在上次使用后没有下降?

如何从 many0 传播 Nom 失败上下文?

`if let` 只是另一种编写其他 `if` 语句的方式吗?

你能用 Rust 和 winapi 制作 Windows 桌面应用程序吗?

为什么我不能将元素写入 Rust 数组中移动的位置,但我可以在元组中完成