Что означает синтаксис "R + 'static" в "F: FnOnce (& mut Resource<S>) -> R +' static"?
Я пытаюсь понять следующий код в actix-web
pub fn resource<F, R>(self, path: &str, f: F) -> App<S>
where
F: FnOnce(&mut Resource<S>) -> R + 'static,
Из моего понимания, resource
это функция, которая принимает 2 параметра: фрагмент строки и функцию.
Функция может использоваться только один раз и принимает изменяемую ссылку Resource
с S
внутри и возвращается R
для которого R
а также S
совершенно произвольно.
Что такое R + static
?
1 ответ
Решение
R
возвращаемое значение f
,
Если вы посмотрите внутрь actix-web
источник, вы можете видеть, что это значение отбрасывается / не используется. Я думаю, что это в основном удобство; вместо указания ()
возвращаемое значение, actix облегчает задачу, не заботясь о том, что вы возвращаете из f
,
Я верю 'static
время жизни следует читать как применение к F
а не R
, Это f
(обычно замыкание) должно иметь статическое время жизни.