【发布时间】:2018-05-04 01:08:05
【问题描述】:
我正在尝试使用 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 相同,不包含任何生命周期注释。
【问题讨论】:
-
正如目前提出的,这个问题是题外话:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。。您还没有提供
FooBarHandler的定义,您还没有显示您正在导入的箱子(及其版本!)等等。事实上,您的代码在语法上无效。
标签: rust rust-actix