Behebung: Erwartete Betonlebensdauer, aber gefundener Parameter für die gebundene Lebensdauer
Ich bin gerade dabei, mich darüber zu äußern. Ich habe versucht, es auf ein minimal reproduzierbares Beispiel zu beschränken.
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 () {
}
Das lässt mich mit:
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)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Zuvor habe ich meinefn
in einemHashMap
so wasHashMap<String, fn(request: &Request, response: &mut ResponseWriter)>
. Das hat gut funktioniert.
Aber jetzt möchte ich die Dinge ein wenig umgestalten und einführenRoute
Dinge strukturieren und speichern alsVec<Route>
. Aber plötzlich bricht die Hölle los und ich weiß nicht, wie ich das beheben soll: - /
Für die Neugierigen ist dies ein Teil meiner Bemühungen, ein von ExpressJs inspiriertes Webframework für Rust zu schreibenFußboden