统一Futures :: future :: map :: Map和Futures :: future :: result _ :: FutureResult

时间:2019-11-24 16:52:14

标签: rust rust-actix

我正在使用以下actix处理程序:

fn callback(info: web::Query<CallbackInfo>, session: Session) -> impl Future<Item = HttpResponse, Error = actix_web::Error>

在此函数中,我进行了一些分支,有时返回:

web::block(|| Result::<Backup, String>::Ok(run_backup(token_info)))
    .from_err()
    .map(|backup| HttpResponse::Ok().json(backup))

其他时候我回来:

let r = HttpResponse::Found()
    .set_header(http::header::LOCATION, "/")
    .finish();
futures::future::ok(r)

编译失败的地方

expected struct `futures::future::map::Map`, found struct `futures::future::result_::FutureResult`

尽管.map并没有带来另一个未来,这很奇怪,但我想我知道。但是,如何将这两次结合起来以便可以将它们用作返回类型?

更新: 已经建议这是Why can impl trait not be used to return multiple / conditional types?的重复项,但是该问题不能解决此问题,仅描述了为什么会发生此问题。我发现问题出在impl Future上,但是我无法更改此设置,因为我使用的是actix-web,它需要此签名或我无法找到的类似签名,因此为什么问这个问题

0 个答案:

没有答案