diff --git a/lib/tests/responder_lifetime-issue-345.rs b/lib/tests/responder_lifetime-issue-345.rs new file mode 100644 index 00000000..ebea90c0 --- /dev/null +++ b/lib/tests/responder_lifetime-issue-345.rs @@ -0,0 +1,31 @@ +#![feature(plugin, custom_derive)] +#![plugin(rocket_codegen)] +#![allow(dead_code)] // This test is only here so that we can ensure it compiles. + +extern crate rocket; + +use rocket::State; +use rocket::response::{self, Responder}; + +struct SomeState; + +pub struct CustomResponder<'r, R> { + responder: R, + state: &'r SomeState, +} + +impl<'r, R: Responder<'r>> Responder<'r> for CustomResponder<'r, R> { + fn respond_to(self, _: &rocket::Request) -> response::Result<'r> { + unimplemented!() + } +} + +#[get("/unit_state")] +fn unit_state(state: State) -> CustomResponder<()> { + CustomResponder { responder: (), state: state.inner() } +} + +#[get("/string_state")] +fn string_state(state: State) -> CustomResponder { + CustomResponder { responder: "".to_string(), state: state.inner() } +}