我要怎么标记这个Fut的生命周期为'a呢?
async fn test_async<F, Fut>(f: F)
where
F: for<'a> Fn(&'a i32) -> Fut + 'static + Send,
Fut: std::future::Future<Output = ()> + Send,
{
let a = 1;
loop {
f(&a).await;
tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
}
}
1
共 5 条评论, 1 页
评论区
写评论把 'static 改成 'a ?
当你要描述带生命周期的参数和返回的 Future 之间存在生命周期关联时,
Pin<Box<dyn 'lifetime +Future>>
是最简单、最广泛的做法(唯一的不足在于多一次堆分配)。比如
--
👇
廴壬吉: 看不懂,这个有什么用
感谢苦瓜大佬.
--
👇
苦瓜小仔: Pin<Box>
看不懂,这个有什么用
Pin<Box>