"R + 'static" 语法在 "F: FnOnce(&mut Resource<S>) -> R + 'static" 中是什么意思?

What does the "R + 'static" syntax mean in "F: FnOnce(&mut Resource<S>) -> R + 'static"?

我正在尝试了解 following code in 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 和 returns R 其中 RS 完全是任意的。

什么是 R + static

Rf 的 return 值。

如果您查看 actix-web source 内部,您可以看到此值已被 discarded/not 使用。我认为这主要是为了方便; actix 不是指定 () return 值,而是通过不关心 f.

中的 return 来简化操作

我认为 'static 生命周期应该理解为适用于 F 而不是 R。也就是说,f(通常是一个闭包)应该有一个静态的生命周期。