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)
}
इसके अलावा, "कॉलबैक" से आपका क्या मतलब है? क्या आप एक उदाहरण प्रदान कर सकते हैं जिसमें आपको इस प्रकार के कॉलबैक की आवश्यकता होगी?
—
कोडर -256
normalize_async_cb
फ़ंक्शन पॉइंटर का इनपुट क्यों है ?