pub struct AndRouteMatcher<T, U>where
T: RouteMatcher,
U: RouteMatcher,{ /* private fields */ }
Expand description
Allows multiple RouteMatcher
values to be combined when accessing a request.
Examples
let methods = vec![Method::GET, Method::HEAD];
let supported_media_types = vec![mime::APPLICATION_JSON];
let method_matcher = MethodOnlyRouteMatcher::new(methods);
let accept_matcher = AcceptHeaderRouteMatcher::new(supported_media_types);
let matcher = AndRouteMatcher::new(method_matcher, accept_matcher);
state.put(Method::GET);
// Request that matches both requirements
let mut headers = HeaderMap::new();
headers.insert(ACCEPT, mime::APPLICATION_JSON.to_string().parse().unwrap());
state.put(headers);
assert!(matcher.is_match(&state).is_ok());
// Request that fails method requirements
state.put(Method::POST);
assert!(matcher.is_match(&state).is_err());
// Request that fails accept header
state.put(Method::GET);
let mut headers = HeaderMap::new();
headers.insert(ACCEPT, mime::TEXT.to_string().parse().unwrap());
state.put(headers);
assert!(matcher.is_match(&state).is_err());
Implementations
sourceimpl<T, U> AndRouteMatcher<T, U>where
T: RouteMatcher,
U: RouteMatcher,
impl<T, U> AndRouteMatcher<T, U>where
T: RouteMatcher,
U: RouteMatcher,
Trait Implementations
sourceimpl<T: Clone, U: Clone> Clone for AndRouteMatcher<T, U>where
T: RouteMatcher,
U: RouteMatcher,
impl<T: Clone, U: Clone> Clone for AndRouteMatcher<T, U>where
T: RouteMatcher,
U: RouteMatcher,
sourcefn clone(&self) -> AndRouteMatcher<T, U>
fn clone(&self) -> AndRouteMatcher<T, U>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresourceimpl<T, U> RouteMatcher for AndRouteMatcher<T, U>where
T: RouteMatcher,
U: RouteMatcher,
impl<T, U> RouteMatcher for AndRouteMatcher<T, U>where
T: RouteMatcher,
U: RouteMatcher,
Auto Trait Implementations
impl<T, U> RefUnwindSafe for AndRouteMatcher<T, U>
impl<T, U> Send for AndRouteMatcher<T, U>where
T: Send,
U: Send,
impl<T, U> Sync for AndRouteMatcher<T, U>where
T: Sync,
U: Sync,
impl<T, U> Unpin for AndRouteMatcher<T, U>where
T: Unpin,
U: Unpin,
impl<T, U> UnwindSafe for AndRouteMatcher<T, U>where
T: UnwindSafe,
U: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<M> IntoRouteMatcher for Mwhere
M: 'static + RouteMatcher + Send + Sync,
impl<M> IntoRouteMatcher for Mwhere
M: 'static + RouteMatcher + Send + Sync,
type Output = M
type Output = M
The concrete RouteMatcher each implementation will provide.
sourcefn into_route_matcher(self) -> <M as IntoRouteMatcher>::Output
fn into_route_matcher(self) -> <M as IntoRouteMatcher>::Output
Transform into a
RouteMatcher
of the the associated type identified by Output
.