fn hello<'a>() {}
在 Rust 中,函数可以有自己的生命周期吗? 我遇到了下面的一段代码:
struct Hi {}
async fn wrapper<'a, F, Fut>(f: F)
where
Fut: Future<Output = ()>,
F: FnOnce(&'a mut Hi) -> Fut{
}
但不太理解这里的 'a 生命周期是什么意思...
fn hello<'a>() {}
struct Hi {}
async fn wrapper<'a, F, Fut>(f: F)
where
Fut: Future<Output = ()>,
F: FnOnce(&'a mut Hi) -> Fut{
}
但不太理解这里的 'a 生命周期是什么意思...
一个函数能拥有自己的生命周期吗?
函数本身没有生命周期,但可以存在对函数的引用。同时,函数参数中可以包含生命周期。
不理解这里的生命周期
'a
是什么意思。
这只是表示具有生命周期 &'a
的闭包的可变借用参数。
实际上,async fn wrapper<F, Fut>(f: F)
表现相同,因为 &'a
可以省略。
如果在函数内部的代码中需要说明生命周期 'a
将比某个生命周期 'b
更长,那么这将很有用。
例如:
async fn wrapper<'a, 'b, F, Fut>(f: F, b: &'b Hi)
where
Fut: Future<Output = ()>,
F: FnOnce(&'a mut Hi) -> Fut,
'a : 'b