async fnmengembalikan tipe anonim yang mengimplementasikan Future, jadi jika kita ingin menggunakannya sebagai panggilan balik, kita perlu mengonversi nilai kembali ke objek sifat.
Saya mencoba menulis fungsi untuk melakukan ini, tetapi saya memiliki beberapa masalah seumur hidup.
async fnakan mengembalikan seumur hidup semua parameter, sehingga tanda tangan panggilan balik juga perlu. Bagaimana saya bisa menambahkan masa pakai ke nilai balik dari callback?
use futures::future::{Future, FutureExt, LocalBoxFuture};
type Context = ();
type AsyncCb = Box<dyn for<'r> FnOnce(&'r Context) -> LocalBoxFuture<'r, ()>>;
fn normalize_async_cb<Fut: Future<Output = ()>>(f: for<'r> fn(&'r Context) -> Fut) -> AsyncCb
// how to add 'r for Fut? ^^^
{
let cb = move |ctx: &Context| f(ctx).boxed_local();
Box::new(cb)
}
normalize_async_cbpointer fungsi?