Мы можем написать следующее
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
.
Пример предоставлен комментатором Кицу
Детская площадка
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 }
}