"错误E0477:该类型未满足所需的生命周期"使用Actix-Web处理程序

时间:2018-05-04 01:08:05

标签: rust rust-actix

我正在尝试使用Actix-Web实现HTTP请求处理程序。这是我的代码的相关部分:

impl<S> Handler<S> for FooBarHandler {
    type Result = Box<Future<Item = HttpResponse, Error = Error>>;

    fn handle(&mut self, req : HttpRequest<S>) -> Self::Result {
        req.json().from_err().and_then(|foo : Foo|
            self.baz.qux(foo);
            Ok(HttpResponse::Ok().finish())
        }).responder()
    }
}

但是,我收到此错误消息:

error[E0477]: the type  `mymod::futures::AndThen<mymod::futures::future::FromErr<mymod::actix_web::dev::JsonBody<mymod::actix_web::HttpRequest<S>, mymod::Foo>, mymod::actix_web::Error>, std::result::Result<mymod::actix_web::HttpResponse, mymod::actix_web::Error>, [closure@src/mymod.rs:53:40: 56:10 self:&&mut mymod::FooBarHandler]>` does not fulfill the required lifetime
  --> src/mymod.rs:56:12
   |
56 |         }).responder()
   |            ^^^^^^^^^
   |
   = note: type must satisfy the static lifetime

我根本不明白这个错误信息。该代码几乎与this example相同,后者不包含任何生命周期注释。

1 个答案:

答案 0 :(得分:2)

您在.and_then future中使用self,这违反了生命周期要求。