1 #![feature(proc_macro_hygiene)]
2 #![allow(dead_code)] // This test is only here so that we can ensure it compiles.
3
4 #[macro_use] extern crate rocket;
5
6 use rocket::State;
7 use rocket::response::{self, Responder};
8
9 struct SomeState;
10
11 pub struct CustomResponder<'r, R> {
12 responder: R,
13 state: &'r SomeState,
14 }
15
16 impl<'r, R: Responder<'r>> Responder<'r> for CustomResponder<'r, R> {
respond_to(self, _: &rocket::Request) -> response::Result<'r>17 fn respond_to(self, _: &rocket::Request) -> response::Result<'r> {
18 unimplemented!()
19 }
20 }
21
22 #[get("/unit_state")]
unit_state(state: State<SomeState>) -> CustomResponder<()>23 fn unit_state(state: State<SomeState>) -> CustomResponder<()> {
24 CustomResponder { responder: (), state: state.inner() }
25 }
26
27 #[get("/string_state")]
string_state(state: State<SomeState>) -> CustomResponder<String>28 fn string_state(state: State<SomeState>) -> CustomResponder<String> {
29 CustomResponder { responder: "".to_string(), state: state.inner() }
30 }
31