Как исправить: ожидаемый конкретный срок службы, но найденный связанный параметр времени жизни
В настоящее время я выношу свой слух из-за этого. Я попытался сократить это до минимального воспроизводимого примера.
struct Request;
struct ResponseWriter<'a> {
dummy: &'a ()
}
#[deriving(Clone)]
pub struct RouteStore{
pub routes: Vec<Route>,
}
#[deriving(Clone)]
struct Route {
path: String,
handler: fn(request: &Request, response: &mut ResponseWriter)
}
impl RouteStore {
pub fn new () -> RouteStore {
RouteStore {
routes: Vec::new()
}
}
fn add_route (&mut self, path: String, handler: fn(request: &Request, response: &mut ResponseWriter)) -> () {
let route = Route {
path: path,
handler: handler
};
self.routes.push(route);
}
}
fn main () {
}
Это оставляет меня с:
error: mismatched types: expected `fn(&http::server::request::Request, &mut http::server::response::ResponseWriter<>)` but found `fn(&http::server::request::Request, &mut http::server::response::ResponseWriter<>)` (expected concrete lifetime, but found bound lifetime parameter )
src/so.rs:12 handler: fn(request: &Request, response: &mut ResponseWriter)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ранее я хранил своиfn
вHashMap
как этоHashMap<String, fn(request: &Request, response: &mut ResponseWriter)>
, Это работало нормально.
Но теперь я хочу немного изменить положение вещей и представитьRoute
структурировать и хранить вещи какVec<Route>
, Но вдруг ад распадается, и я не знаю, как это исправить: - /
Для любопытных это часть моих усилий по написанию веб-фреймворка для Rust, вдохновленного expressjs.Этаж