async fn
ส่งคืนชนิดที่ไม่ระบุชื่อที่ใช้Future
ดังนั้นหากเราต้องการใช้เป็นโทรกลับเราต้องแปลงค่าส่งคืนเป็นวัตถุลักษณะ
ฉันพยายามเขียนฟังก์ชั่นการทำเช่นนี้ แต่ฉันมีปัญหาตลอดชีวิต
async fn
จะคืนค่าอายุการใช้งานของพารามิเตอร์ทั้งหมดดังนั้นลายเซ็นของการติดต่อกลับยังต้อง ฉันจะเพิ่มอายุการใช้งานในค่าส่งคืนของการโทรกลับได้อย่างไร
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)
}
นอกจากนี้คุณหมายถึงอะไรโดย "โทรกลับ"? คุณสามารถให้ตัวอย่างที่แสดงว่าคุณต้องการโทรกลับประเภทนี้ได้ที่ไหน
—
Coder-256
normalize_async_cb
ตัวชี้ฟังก์ชัน?