Что означает синтаксис «R +» static в «F: FnOnce (& mut Resource <S>) -> R + 'static"? - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь понять следующий код в actix-web

pub fn resource<F, R>(self, path: &str, f: F) -> App<S>
where
    F: FnOnce(&mut Resource<S>) -> R + 'static,

Насколько я понимаю, resource - это функция, которая принимает 2 параметра: фрагмент строки иfunction.

Функция может использоваться только один раз и принимает изменяемую ссылку Resource с S внутри и возвращает R, для которой R и S полностью произвольны.

Что такое R + static?

1 Ответ

0 голосов
/ 14 декабря 2018

R - это возвращаемое значение f.

Если вы заглянете внутрь actix-web источника , вы увидите, что это значение отбрасывается / не используется.Я думаю, что это в основном удобство;вместо того, чтобы указывать () возвращаемое значение, actix делает это проще, не заботясь о том, что вы возвращаете из вашего f.

Я считаю, что время жизни 'static следует читать как применение к Fа не R.То есть f (обычно замыкание) должен иметь статическое время жизни.

...