Как исправить: ожидаемый конкретный срок службы, но найденный связанный параметр времени жизни

В настоящее время я выношу свой слух из-за этого. Я попытался сократить это до минимального воспроизводимого примера.

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.Этаж

Ответы на вопрос(1)

Ваш ответ на вопрос