use crate::router::{request::Request, response::IntoResponse};
use std::future::Future;
mod json;
mod path;
mod query;
mod state;
mod tuple;
pub use json::Json;
pub use path::Path;
pub use query::Query;
pub use state::State;
pub trait FromRequest<S>: Sized {
type Rejection: IntoResponse;
fn from_request(
req: &Request,
state: &S,
) -> impl Future<Output = Result<Self, Self::Rejection>> + Send;
}
pub trait FromRef<T> {
fn from_ref(input: &T) -> Self;
}
impl<T: Clone> FromRef<T> for T {
fn from_ref(input: &T) -> Self {
input.clone()
}
}