use super::{ParamsNames, PathParams};
use crate::header::Method;
use crate::util::PinnedFuture;
use crate::{Request, Resources, Response};
use std::borrow::Cow;
#[derive(Debug, Clone)]
pub struct RoutePath {
pub method: Option<Method>,
pub path: Cow<'static, str>,
}
pub trait Route: Send + Sync {
fn validate_requirements(
&self,
params: &ParamsNames,
resources: &Resources,
);
fn path(&self) -> RoutePath;
fn call<'a>(
&'a self,
req: &'a mut Request,
params: &'a PathParams,
resources: &'a Resources,
) -> PinnedFuture<'a, crate::Result<Response>>;
}