pub trait ServiceBuilderExt<L>: Sealed<L> + Sized {
    // Required methods
    fn trace_for_http(
        self,
    ) -> ServiceBuilder<Stack<TraceLayer<HttpMakeClassifier>, L>>;
    fn trace_for_grpc(
        self,
    ) -> ServiceBuilder<Stack<TraceLayer<GrpcMakeClassifier>, L>>;
    fn override_request_header<M>(
        self,
        header_name: HeaderName,
        make: M,
    ) -> ServiceBuilder<Stack<SetRequestHeaderLayer<M>, L>>;
    fn append_request_header<M>(
        self,
        header_name: HeaderName,
        make: M,
    ) -> ServiceBuilder<Stack<SetRequestHeaderLayer<M>, L>>;
    fn insert_request_header_if_not_present<M>(
        self,
        header_name: HeaderName,
        make: M,
    ) -> ServiceBuilder<Stack<SetRequestHeaderLayer<M>, L>>;
    fn override_response_header<M>(
        self,
        header_name: HeaderName,
        make: M,
    ) -> ServiceBuilder<Stack<SetResponseHeaderLayer<M>, L>>;
    fn append_response_header<M>(
        self,
        header_name: HeaderName,
        make: M,
    ) -> ServiceBuilder<Stack<SetResponseHeaderLayer<M>, L>>;
    fn insert_response_header_if_not_present<M>(
        self,
        header_name: HeaderName,
        make: M,
    ) -> ServiceBuilder<Stack<SetResponseHeaderLayer<M>, L>>;
    fn set_request_id<M>(
        self,
        header_name: HeaderName,
        make_request_id: M,
    ) -> ServiceBuilder<Stack<SetRequestIdLayer<M>, L>>
       where M: MakeRequestId;
    fn propagate_request_id(
        self,
        header_name: HeaderName,
    ) -> ServiceBuilder<Stack<PropagateRequestIdLayer, L>>;
    // Provided methods
    fn set_x_request_id<M>(
        self,
        make_request_id: M,
    ) -> ServiceBuilder<Stack<SetRequestIdLayer<M>, L>>
       where M: MakeRequestId { ... }
    fn propagate_x_request_id(
        self,
    ) -> ServiceBuilder<Stack<PropagateRequestIdLayer, L>> { ... }
}Expand description
Extension trait that adds methods to tower::ServiceBuilder for adding middleware from
tower-http.
§Example
use http::{Request, Response, header::HeaderName};
use bytes::Bytes;
use http_body_util::Full;
use std::{time::Duration, convert::Infallible};
use tower::{ServiceBuilder, ServiceExt, Service};
use tower_http::ServiceBuilderExt;
async fn handle(request: Request<Full<Bytes>>) -> Result<Response<Full<Bytes>>, Infallible> {
    Ok(Response::new(Full::default()))
}
let service = ServiceBuilder::new()
    // Methods from tower
    .timeout(Duration::from_secs(30))
    // Methods from tower-http
    .trace_for_http()
    .propagate_header(HeaderName::from_static("x-request-id"))
    .service_fn(handle);Required Methods§
Sourcefn trace_for_http(
    self,
) -> ServiceBuilder<Stack<TraceLayer<HttpMakeClassifier>, L>>
 
fn trace_for_http( self, ) -> ServiceBuilder<Stack<TraceLayer<HttpMakeClassifier>, L>>
High level tracing that classifies responses using HTTP status codes.
This method does not support customizing the output, to do that use TraceLayer
instead.
See tower_http::trace for more details.
Sourcefn trace_for_grpc(
    self,
) -> ServiceBuilder<Stack<TraceLayer<GrpcMakeClassifier>, L>>
 
fn trace_for_grpc( self, ) -> ServiceBuilder<Stack<TraceLayer<GrpcMakeClassifier>, L>>
High level tracing that classifies responses using gRPC headers.
This method does not support customizing the output, to do that use TraceLayer
instead.
See tower_http::trace for more details.
Sourcefn override_request_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> ServiceBuilder<Stack<SetRequestHeaderLayer<M>, L>>
 
fn override_request_header<M>( self, header_name: HeaderName, make: M, ) -> ServiceBuilder<Stack<SetRequestHeaderLayer<M>, L>>
Insert a header into the request.
If a previous value exists for the same header, it is removed and replaced with the new header value.
See tower_http::set_header for more details.
Sourcefn append_request_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> ServiceBuilder<Stack<SetRequestHeaderLayer<M>, L>>
 
fn append_request_header<M>( self, header_name: HeaderName, make: M, ) -> ServiceBuilder<Stack<SetRequestHeaderLayer<M>, L>>
Append a header into the request.
If previous values exist, the header will have multiple values.
See tower_http::set_header for more details.
Sourcefn insert_request_header_if_not_present<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> ServiceBuilder<Stack<SetRequestHeaderLayer<M>, L>>
 
fn insert_request_header_if_not_present<M>( self, header_name: HeaderName, make: M, ) -> ServiceBuilder<Stack<SetRequestHeaderLayer<M>, L>>
Insert a header into the request, if the header is not already present.
See tower_http::set_header for more details.
Sourcefn override_response_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> ServiceBuilder<Stack<SetResponseHeaderLayer<M>, L>>
 
fn override_response_header<M>( self, header_name: HeaderName, make: M, ) -> ServiceBuilder<Stack<SetResponseHeaderLayer<M>, L>>
Insert a header into the response.
If a previous value exists for the same header, it is removed and replaced with the new header value.
See tower_http::set_header for more details.
Sourcefn append_response_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> ServiceBuilder<Stack<SetResponseHeaderLayer<M>, L>>
 
fn append_response_header<M>( self, header_name: HeaderName, make: M, ) -> ServiceBuilder<Stack<SetResponseHeaderLayer<M>, L>>
Append a header into the response.
If previous values exist, the header will have multiple values.
See tower_http::set_header for more details.
Sourcefn insert_response_header_if_not_present<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> ServiceBuilder<Stack<SetResponseHeaderLayer<M>, L>>
 
fn insert_response_header_if_not_present<M>( self, header_name: HeaderName, make: M, ) -> ServiceBuilder<Stack<SetResponseHeaderLayer<M>, L>>
Insert a header into the response, if the header is not already present.
See tower_http::set_header for more details.
Sourcefn set_request_id<M>(
    self,
    header_name: HeaderName,
    make_request_id: M,
) -> ServiceBuilder<Stack<SetRequestIdLayer<M>, L>>where
    M: MakeRequestId,
 
fn set_request_id<M>(
    self,
    header_name: HeaderName,
    make_request_id: M,
) -> ServiceBuilder<Stack<SetRequestIdLayer<M>, L>>where
    M: MakeRequestId,
Add request id header and extension.
See tower_http::request_id for more details.
Sourcefn propagate_request_id(
    self,
    header_name: HeaderName,
) -> ServiceBuilder<Stack<PropagateRequestIdLayer, L>>
 
fn propagate_request_id( self, header_name: HeaderName, ) -> ServiceBuilder<Stack<PropagateRequestIdLayer, L>>
Propgate request ids from requests to responses.
See tower_http::request_id for more details.
Provided Methods§
Sourcefn set_x_request_id<M>(
    self,
    make_request_id: M,
) -> ServiceBuilder<Stack<SetRequestIdLayer<M>, L>>where
    M: MakeRequestId,
 
fn set_x_request_id<M>(
    self,
    make_request_id: M,
) -> ServiceBuilder<Stack<SetRequestIdLayer<M>, L>>where
    M: MakeRequestId,
Add request id header and extension, using x-request-id as the header name.
See tower_http::request_id for more details.
Sourcefn propagate_x_request_id(
    self,
) -> ServiceBuilder<Stack<PropagateRequestIdLayer, L>>
 
fn propagate_x_request_id( self, ) -> ServiceBuilder<Stack<PropagateRequestIdLayer, L>>
Propgate request ids from requests to responses, using x-request-id as the header name.
See tower_http::request_id for more details.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.