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