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§
sourcepub fn new(classifier: C) -> Selfwhere
C: ClassifyResponse + Clone,
pub fn new(classifier: C) -> Selfwhere
C: ClassifyResponse + Clone,
Create a new SharedClassifier
from the given classifier.
Trait Implementations§
source§fn clone(&self) -> SharedClassifier<C>
fn clone(&self) -> SharedClassifier<C>
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 more§type FailureClass = <C as ClassifyResponse>::FailureClass
type FailureClass = <C as ClassifyResponse>::FailureClass
The type of failure classifications. Read more
§type ClassifyEos = <C as ClassifyResponse>::ClassifyEos
type ClassifyEos = <C as ClassifyResponse>::ClassifyEos
The type used to classify the response end of stream (EOS).
§type Classifier = C
type Classifier = C
The response classifier produced.
source§fn 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