Struct tower::util::BoxCloneService
source · pub struct BoxCloneService<T, U, E>(/* private fields */);Available on crate feature
util only.Expand description
BoxCloneService turns a service into a trait object, allowing the
response future type to be dynamic, and allowing the service to be cloned.
This is similar to BoxService except the resulting
service implements Clone.
§Example
use tower::{Service, ServiceBuilder, BoxError, util::BoxCloneService};
use std::time::Duration;
// This service has a complex type that is hard to name
let service = ServiceBuilder::new()
.map_request(|req| {
println!("received request");
req
})
.map_response(|res| {
println!("response produced");
res
})
.load_shed()
.concurrency_limit(64)
.timeout(Duration::from_secs(10))
.service_fn(|req: Request| async {
Ok::<_, BoxError>(Response::new())
});
// `BoxCloneService` will erase the type so it's nameable
let service: BoxCloneService<Request, Response, BoxError> = BoxCloneService::new(service);
// And we can still clone the service
let cloned_service = service.clone();Implementations§
source§impl<T, U, E> BoxCloneService<T, U, E>
impl<T, U, E> BoxCloneService<T, U, E>
Trait Implementations§
source§impl<T, U, E> Clone for BoxCloneService<T, U, E>
impl<T, U, E> Clone for BoxCloneService<T, U, E>
source§impl<T, U, E> Debug for BoxCloneService<T, U, E>
impl<T, U, E> Debug for BoxCloneService<T, U, E>
Auto Trait Implementations§
impl<T, U, E> Freeze for BoxCloneService<T, U, E>
impl<T, U, E> !RefUnwindSafe for BoxCloneService<T, U, E>
impl<T, U, E> Send for BoxCloneService<T, U, E>
impl<T, U, E> !Sync for BoxCloneService<T, U, E>
impl<T, U, E> Unpin for BoxCloneService<T, U, E>
impl<T, U, E> !UnwindSafe for BoxCloneService<T, U, E>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit)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, S, Target, Request> MakeService<Target, Request> for M
impl<M, S, Target, Request> MakeService<Target, Request> for M
§type Response = <S as Service<Request>>::Response
type Response = <S as Service<Request>>::Response
Available on crate feature
make only.Responses given by the service
§type Error = <S as Service<Request>>::Error
type Error = <S as Service<Request>>::Error
Available on crate feature
make only.Errors produced by the service
§type MakeError = <M as Service<Target>>::Error
type MakeError = <M as Service<Target>>::Error
Available on crate feature
make only.Errors produced while building a service.
§type Future = <M as Service<Target>>::Future
type Future = <M as Service<Target>>::Future
Available on crate feature
make only.The future of the
Service instance.source§fn poll_ready(
&mut self,
cx: &mut Context<'_>,
) -> Poll<Result<(), <M as MakeService<Target, Request>>::MakeError>>
fn poll_ready( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<(), <M as MakeService<Target, Request>>::MakeError>>
Available on crate feature
make only.Returns
Poll::Ready when the factory is able to create more services. Read moresource§fn make_service(
&mut self,
target: Target,
) -> <M as MakeService<Target, Request>>::Future
fn make_service( &mut self, target: Target, ) -> <M as MakeService<Target, Request>>::Future
Available on crate feature
make only.Create and return a new service value asynchronously.
source§fn into_service(self) -> IntoService<Self, Request>where
Self: Sized,
fn into_service(self) -> IntoService<Self, Request>where
Self: Sized,
Available on crate feature
make only.source§fn as_service(&mut self) -> AsService<'_, Self, Request>where
Self: Sized,
fn as_service(&mut self) -> AsService<'_, Self, Request>where
Self: Sized,
Available on crate feature
make only.source§impl<T, Request> ServiceExt<Request> for T
impl<T, Request> ServiceExt<Request> for T
source§fn ready(&mut self) -> Ready<'_, Self, Request> ⓘwhere
Self: Sized,
fn ready(&mut self) -> Ready<'_, Self, Request> ⓘwhere
Self: Sized,
Available on crate feature
util only.Yields a mutable reference to the service when it is ready to accept a request.
source§fn ready_and(&mut self) -> ReadyAnd<'_, Self, Request>where
Self: Sized,
fn ready_and(&mut self) -> ReadyAnd<'_, Self, Request>where
Self: Sized,
👎Deprecated since 0.4.6: please use the
ServiceExt::ready method insteadAvailable on crate feature
util only.Yields a mutable reference to the service when it is ready to accept a request.
source§fn ready_oneshot(self) -> ReadyOneshot<Self, Request> ⓘwhere
Self: Sized,
fn ready_oneshot(self) -> ReadyOneshot<Self, Request> ⓘwhere
Self: Sized,
Available on crate feature
util only.Yields the service when it is ready to accept a request.
source§fn oneshot(self, req: Request) -> Oneshot<Self, Request> ⓘwhere
Self: Sized,
fn oneshot(self, req: Request) -> Oneshot<Self, Request> ⓘwhere
Self: Sized,
Available on crate feature
util only.Consume this
Service, calling with the providing request once it is ready.source§fn and_then<F>(self, f: F) -> AndThen<Self, F>
fn and_then<F>(self, f: F) -> AndThen<Self, F>
Available on crate feature
util only.Executes a new future after this service’s future resolves. This does
not alter the behaviour of the
poll_ready method. Read moresource§fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F>
fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F>
Available on crate feature
util only.Maps this service’s response value to a different value. This does not
alter the behaviour of the
poll_ready method. Read moresource§fn map_err<F, Error>(self, f: F) -> MapErr<Self, F>
fn map_err<F, Error>(self, f: F) -> MapErr<Self, F>
Available on crate feature
util only.Maps this service’s error value to a different value. This does not
alter the behaviour of the
poll_ready method. Read moresource§fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F>
fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F>
Available on crate feature
util only.Maps this service’s result type (
Result<Self::Response, Self::Error>)
to a different value, regardless of whether the future succeeds or
fails. Read moresource§fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F>
fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F>
Available on crate feature
util only.Composes a function in front of the service. Read more
source§fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F>
fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F>
Available on crate feature
util only.Composes an asynchronous function after this service. Read more
source§fn map_future<F, Fut, Response, Error>(self, f: F) -> MapFuture<Self, F>
fn map_future<F, Fut, Response, Error>(self, f: F) -> MapFuture<Self, F>
Available on crate feature
util only.Composes a function that transforms futures produced by the service. Read more