async fnrenvoie un type anonyme qui implémente Future, donc si nous voulons l'utiliser comme rappel, nous devons convertir la valeur de retour en objet trait.
J'ai essayé d'écrire une fonction pour ce faire, mais j'ai eu des problèmes à vie.
async fnrenverra la durée de vie de tous les paramètres, donc la signature du rappel doit également le faire. Comment puis-je ajouter la durée de vie à la valeur de retour du rappel?
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_cbun pointeur de fonction?