Skip to main content

Route

Struct Route 

Source
pub struct Route<R, N, const M: usize> { /* private fields */ }
Expand description

a tree type able of routing multiple Method against multiple Service types in linear manner.

Implementations§

Source§

impl<const M: usize> Route<(), MethodNotAllowedBuilder<()>, M>

Source

pub const fn new( methods: [Method; M], ) -> Route<(), MethodNotAllowedBuilder<()>, M>

construct a new Route with given array of methods.

§Panics

panic when input array is zero length.

Source

pub fn route<R>(self, route: R) -> Route<R, MethodNotAllowedBuilder<R>, M>

pass certain Service type to Route so it can be matched against the methods Route contains.

Source§

impl<R, N, const M: usize> Route<R, N, M>

Source

pub fn next<R1, const M1: usize>( self, next: Route<R1, MethodNotAllowedBuilder<R1>, M1>, ) -> Route<R, Route<R1, N, M1>, M>

append another Route to existing Route type.

§Panics

panic when chained Routes contain overlapping Method. Route only do liner method matching and overlapped method(s) will always enter the first Route matched against.

Source

pub fn get<R1>(self, get: R1) -> Route<R, Route<R1, N, 1>, M>

appending Method::GET guarded route to current Route. Act as a shortcut of Route::next.

Source

pub fn post<R1>(self, post: R1) -> Route<R, Route<R1, N, 1>, M>

appending Method::POST guarded route to current Route. Act as a shortcut of Route::next.

Source

pub fn put<R1>(self, put: R1) -> Route<R, Route<R1, N, 1>, M>

appending Method::PUT guarded route to current Route. Act as a shortcut of Route::next.

Source

pub fn delete<R1>(self, delete: R1) -> Route<R, Route<R1, N, 1>, M>

appending Method::DELETE guarded route to current Route. Act as a shortcut of Route::next.

Source

pub fn head<R1>(self, head: R1) -> Route<R, Route<R1, N, 1>, M>

appending Method::HEAD guarded route to current Route. Act as a shortcut of Route::next.

Source

pub fn options<R1>(self, options: R1) -> Route<R, Route<R1, N, 1>, M>

appending Method::OPTIONS guarded route to current Route. Act as a shortcut of Route::next.

Source

pub fn connect<R1>(self, connect: R1) -> Route<R, Route<R1, N, 1>, M>

appending Method::CONNECT guarded route to current Route. Act as a shortcut of Route::next.

Source

pub fn patch<R1>(self, patch: R1) -> Route<R, Route<R1, N, 1>, M>

appending Method::PATCH guarded route to current Route. Act as a shortcut of Route::next.

Source

pub fn trace<R1>(self, trace: R1) -> Route<R, Route<R1, N, 1>, M>

appending Method::TRACE guarded route to current Route. Act as a shortcut of Route::next.

Trait Implementations§

Source§

impl<R, N, const M: usize> PathGen for Route<R, N, M>

Source§

fn path_gen(&mut self, prefix: &str) -> String

path generator. Read more
Source§

impl<R, N, const M: usize> RouteGen for Route<R, N, M>

Source§

type Route<R1> = R1

service builder type for generating the final route service.
Source§

fn route_gen<R1>(route: R1) -> <Route<R, N, M> as RouteGen>::Route<R1>

route service generator. Read more
Source§

impl<Arg, R, N, const M: usize> Service<Arg> for Route<R, N, M>
where R: Service<Arg>, N: Service<Arg, Error = <R as Service<Arg>>::Error>, Arg: Clone,

Source§

type Response = RouteService<<R as Service<Arg>>::Response, <N as Service<Arg>>::Response, M>

The Ok part of output future.
Source§

type Error = <R as Service<Arg>>::Error

The Err part of output future.
Source§

async fn call( &self, arg: Arg, ) -> Result<<Route<R, N, M> as Service<Arg>>::Response, <Route<R, N, M> as Service<Arg>>::Error>

Auto Trait Implementations§

§

impl<R, N, const M: usize> Freeze for Route<R, N, M>
where R: Freeze, N: Freeze,

§

impl<R, N, const M: usize> RefUnwindSafe for Route<R, N, M>

§

impl<R, N, const M: usize> Send for Route<R, N, M>
where R: Send, N: Send,

§

impl<R, N, const M: usize> Sync for Route<R, N, M>
where R: Sync, N: Sync,

§

impl<R, N, const M: usize> Unpin for Route<R, N, M>
where R: Unpin, N: Unpin,

§

impl<R, N, const M: usize> UnsafeUnpin for Route<R, N, M>
where R: UnsafeUnpin, N: UnsafeUnpin,

§

impl<R, N, const M: usize> UnwindSafe for Route<R, N, M>
where R: UnwindSafe, N: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> BorrowState<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<S, Arg> ServiceExt<Arg> for S
where S: Service<Arg>,

Source§

fn enclosed<T>(self, build: T) -> Pipeline<Self, T, BuildEnclosed>
where T: Service<Result<Self::Response, Self::Error>>, Self: Sized,

Enclose Self with given T as Service<<Self as Service<_>>::Response>>. In other word T would take Self’s Service::Response type as it’s generic argument of Service<_> impl.
Source§

fn enclosed_fn<T, Req, O>( self, func: T, ) -> Pipeline<Self, AsyncFn<T>, BuildEnclosed>
where T: AsyncFn(&Self::Response, Req) -> O + Clone, Self: Sized,

Function version of Self::enclosed method.
Source§

fn map<F, Res, ResMap>(self, mapper: F) -> Pipeline<Self, Map<F>, BuildEnclosed>
where F: Fn(Res) -> ResMap + Clone, Self: Sized,

Mutate <<Self::Response as Service<Req>>::Future as Future>::Output type with given closure.
Source§

fn map_err<F, Err, ErrMap>( self, err: F, ) -> Pipeline<Self, MapErr<F>, BuildEnclosed>
where F: Fn(Err) -> ErrMap + Clone, Self: Sized,

Mutate <Self::Response as Service<Req>>::Error type with given closure.
Source§

fn and_then<F>(self, factory: F) -> Pipeline<Self, F, BuildAndThen>
where F: Service<Arg>, Self: Sized,

Chain another service factory who’s service takes Self’s Service::Response output as Service::Request.
Source§

impl<S, Req> ServiceObject<Req> for S
where S: Service<Req>,

Source§

type Response = <S as Service<Req>>::Response

Source§

type Error = <S as Service<Req>>::Error

Source§

fn call<'s>( &'s self, req: Req, ) -> Pin<Box<dyn Future<Output = Result<<S as ServiceObject<Req>>::Response, <S as ServiceObject<Req>>::Error>> + 's>>
where Req: 's,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more