我正在使用以下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,它需要此签名或我无法找到的类似签名,因此为什么问这个问题