В настоящее время я изучаю Rust, и я борюсь со временем жизни, создавая простого наблюдателя, который будет хранить обратный вызов произвольного типа.Вектор функций в ржавчине
Я начал с базовой структурой
struct Signal<T> {
slots: Vec<|T|>
}
, который получил мне первоначальную ошибку пожизненную
signal_test.rs:7:16: 7:19 error: explicit lifetime bound required
signal_test.rs:7 slots: Vec<|T|>
^~~
error: aborting due to previous error
Так что в следующем я попробовать добавить несколько пожизненных спецификаторов.
struct Signal<'r, T> {
slots: Vec<'r |T|>
}
который получает мне некоторые новые ошибки
signal_test.rs:7:12: 7:23 error: wrong number of lifetime parameters: expected 0, found 1 [E0107]
signal_test.rs:7 slots: Vec<'r |T|>
^~~~~~~~~~~
signal_test.rs:7:19: 7:22 error: explicit lifetime bound required
signal_test.rs:7 slots: Vec<'r |T|>
Я не смог найти достаточно пожизненную ржавчины документации намекнуть на то, что мне нужно сделать, чтобы исправить это. Возможно, это не очень хороший образец для использования в Rust. Некоторая помощь и комментарии будут оценены.
Эй, что работал! Не могли бы вы объяснить часть синтаксиса: r>, каждый пример, который я видел, ставит спецификатор жизненного цикла перед типом. –
@EricY, именно так указаны сроки жизни замыканий. Это особый случай. Еще один - границы объектов объектов, которые выглядят так: 'Box'. Вам просто нужно привыкнуть к этому :) –
@EricY, текущие закрытия, однако, будут удалены в пользу распакованных закрытий в ближайшем будущем, поэтому этот бит синтаксиса, вероятно, полностью исчезнет. –