gpt4 book ai didi

rust - 是否可以指定异步函数结果的生存期?

转载 作者:行者123 更新时间:2023-12-03 11:42:59 26 4
gpt4 key购买 nike

我们可以写以下内容

fn foo<'a, 'b>(va: &'a (), vb: &'b ()) -> impl std::future::Future<Output = ()> + 'b {
async {}
}
而不使用 async关键字。我们可以对 async关键字做同样的事情吗?
我们通常写
async fn foo<'a, 'b>(va: &'a (), vb: &'b ()) {
async {}
}
但是没有地方可以放置输出生存期 'b
评论员Kitsu提供的示例
Playground
use std::cell::RefCell;

fn foo<'a, 'b>(va: &'a i32, vb: &'b RefCell<i32>) -> impl std::future::Future<Output = i32> + 'b {
let mut t = vb.borrow_mut();
*t += va;
let x = *t;
async move { x }
}

最佳答案

async fn始终自动取决于其参数的所有生存期。
没有语法可以更改它,因为没有其他可能性。这是因为调用async fn不会从函数主体运行任何代码,而只会在返回的Future中存储函数的参数。将来,以后将在轮询时使用参数,因此它与所有参数的所有生存期相关。

关于rust - 是否可以指定异步函数结果的生存期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62807916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com