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§
source§impl<T, U> AndRouteMatcher<T, U>where
T: RouteMatcher,
U: RouteMatcher,
impl<T, U> AndRouteMatcher<T, U>where
T: RouteMatcher,
U: RouteMatcher,
Trait Implementations§
source§impl<T, U> Clone for AndRouteMatcher<T, U>where
T: RouteMatcher + Clone,
U: RouteMatcher + Clone,
impl<T, U> Clone for AndRouteMatcher<T, U>where
T: RouteMatcher + Clone,
U: RouteMatcher + Clone,
source§fn clone(&self) -> AndRouteMatcher<T, U>
fn clone(&self) -> AndRouteMatcher<T, U>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<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§
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<M> IntoRouteMatcher for Mwhere
M: RouteMatcher + Send + Sync + 'static,
impl<M> IntoRouteMatcher for Mwhere
M: RouteMatcher + Send + Sync + 'static,
source§fn 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
.