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
함수 포인터에 대한 입력이 왜 필요한 가요?