没有变量附加的生命周期是什么意思?

3
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 生命周期是什么意思...


1
生命周期不是针对函数,而是针对其参数的参数,即“Hi”。 - Adam
1
这个回答解决了你的问题吗?为什么生命周期名称出现在函数类型中? - kmdreko
1个回答

3

一个函数能拥有自己的生命周期吗?

函数本身没有生命周期,但可以存在对函数的引用。同时,函数参数中可以包含生命周期。

不理解这里的生命周期 '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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接