Объявление срока закрытия в структуре
Из различных источников, которые я могу найти, давая жизнь ресурсу в struct
, будет выполняться следующим образом:
pub struct Event<'self> {
name: String,
execute: &'self |data: &str|
}
Использование времени &'self
теперь устарело. При объявлении свойства типа замыкания компилятор говорит мне, что ему нужен спецификатор lifetime, но я не могу найти пример где-нибудь, у которого есть замыкание как свойство структуры.
Это то, что я сейчас пытаюсь:
pub struct Event<'a> {
name: String,
execute: &'a |data: &str|
}
Но я получаю следующую ошибку: error: missing lifetime specifier [E0106]
Каков правильный синтаксис для объявления времени жизни closure
в struct
или любого типа, если это важно?
Ответы
Ответ 1
Обновлено до Rust 1.4.
Закрытия теперь основаны на одном из трех признаков: Fn
, FnOnce
и FnMut
.
Тип замыкания нельзя точно определить, мы можем привязать общий тип к одному из признаков замыкания.
pub struct Event<F: Fn(&str) -> bool> {
name: String,
execute: F
}