nucleus_http/
state.rs

1use std::ops::Deref;
2
3use crate::request::Request;
4
5#[derive(Debug, Default, Clone, Copy)]
6pub struct State<S>(pub S);
7
8pub trait FromRequest<S> {
9    fn from_request(state: State<S>, request: Request) -> Self;
10}
11
12impl<S> FromRequest<S> for S
13where
14    S: Clone,
15{
16    fn from_request(state: State<S>, _request: Request) -> Self {
17        let State(inner_state) = state;
18        inner_state
19    }
20}
21
22impl<S> Deref for State<S> {
23    type Target = S;
24    fn deref(&self) -> &Self::Target {
25        &self.0
26    }
27}