async fn
uygulayan anonim bir tür döndürür Future
; bu nedenle, geri arama olarak kullanmak istiyorsak, dönüş değerini bir özellik nesnesine dönüştürmemiz gerekir.
Bunu yapmak için bir işlev yazmaya çalıştım, ancak bazı yaşam boyu problemlerim vardı.
async fn
tüm parametrelerin ömrünü döndürür, bu nedenle geri arama imzasının da olması gerekir. Ömrünü geri aramanın dönüş değerine nasıl ekleyebilirim?
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)
}
Ayrıca, "geri arama" ile ne demek istiyorsun? Bu tür geri aramaya nerede ihtiyaç duyacağınızı gösteren bir örnek verebilir misiniz?
—
Coder-256
normalize_async_cb
bir işlev işaretçisi girdisi ?