Struct tower_http::classify::SharedClassifier
source · [−]pub struct SharedClassifier<C> { /* private fields */ }
Expand description
A MakeClassifier
that produces new classifiers by cloning an inner classifier.
When a type implementing ClassifyResponse
doesn’t depend on information
from the request, SharedClassifier
can be used to turn an instance of that type
into a MakeClassifier
.
Example
use std::fmt;
use tower_http::classify::{
ClassifyResponse, ClassifiedResponse, NeverClassifyEos,
SharedClassifier, MakeClassifier,
};
use http::Response;
// A response classifier that only considers errors to be failures.
#[derive(Clone, Copy)]
struct MyClassifier;
impl ClassifyResponse for MyClassifier {
type FailureClass = String;
type ClassifyEos = NeverClassifyEos<Self::FailureClass>;
fn classify_response<B>(
self,
_res: &Response<B>,
) -> ClassifiedResponse<Self::FailureClass, Self::ClassifyEos> {
ClassifiedResponse::Ready(Ok(()))
}
fn classify_error<E>(self, error: &E) -> Self::FailureClass
where
E: fmt::Display + 'static,
{
error.to_string()
}
}
// Some function that requires a `MakeClassifier`
fn use_make_classifier<M: MakeClassifier>(make: M) {
// ...
}
// `MyClassifier` doesn't implement `MakeClassifier` but since it doesn't
// care about the incoming request we can make `MyClassifier`s by cloning.
// That is what `SharedClassifier` does.
let make_classifier = SharedClassifier::new(MyClassifier);
// We now have a `MakeClassifier`!
use_make_classifier(make_classifier);
Implementations
sourceimpl<C> SharedClassifier<C>
impl<C> SharedClassifier<C>
sourcepub fn new(classifier: C) -> Self where
C: ClassifyResponse + Clone,
pub fn new(classifier: C) -> Self where
C: ClassifyResponse + Clone,
Create a new SharedClassifier
from the given classifier.
Trait Implementations
sourceimpl<C: Clone> Clone for SharedClassifier<C>
impl<C: Clone> Clone for SharedClassifier<C>
sourcefn clone(&self) -> SharedClassifier<C>
fn clone(&self) -> SharedClassifier<C>
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 more
sourceimpl<C: Debug> Debug for SharedClassifier<C>
impl<C: Debug> Debug for SharedClassifier<C>
sourceimpl<C> MakeClassifier for SharedClassifier<C> where
C: ClassifyResponse + Clone,
impl<C> MakeClassifier for SharedClassifier<C> where
C: ClassifyResponse + Clone,
type FailureClass = C::FailureClass
type FailureClass = C::FailureClass
The type of failure classifications. Read more
type ClassifyEos = C::ClassifyEos
type ClassifyEos = C::ClassifyEos
The type used to classify the response end of stream (EOS).
type Classifier = C
type Classifier = C
The response classifier produced.
sourcefn make_classifier<B>(&self, _req: &Request<B>) -> Self::Classifier
fn make_classifier<B>(&self, _req: &Request<B>) -> Self::Classifier
Returns a response classifier for this request
Auto Trait Implementations
impl<C> RefUnwindSafe for SharedClassifier<C> where
C: RefUnwindSafe,
impl<C> Send for SharedClassifier<C> where
C: Send,
impl<C> Sync for SharedClassifier<C> where
C: Sync,
impl<C> Unpin for SharedClassifier<C> where
C: Unpin,
impl<C> UnwindSafe for SharedClassifier<C> where
C: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
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<T> PolicyExt for T where
T: ?Sized,
impl<T> PolicyExt for T where
T: ?Sized,
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more