Skip to main content

ExecutorService

Struct ExecutorService 

Source
pub struct ExecutorService<S, E> { /* private fields */ }
Expand description

A service that delegates request processing to an executor.

Each request is spawned as a new task on the executor, allowing parallel processing of multiple requests.

§Requirements

The inner service must implement Clone so that each spawned task can have its own instance. This is the standard pattern for Tower services that need to be shared across tasks.

§Cancellation

When the response future is dropped, the spawned task continues to run to completion. This is intentional to avoid partial processing. If you need cancellation, consider wrapping with a timeout layer.

Implementations§

Source§

impl<S, E> ExecutorService<S, E>

Source

pub fn new(service: S, executor: E) -> Self

Creates a new executor service.

Source

pub fn get_ref(&self) -> &S

Returns a reference to the inner service.

Source

pub fn get_mut(&mut self) -> &mut S

Returns a mutable reference to the inner service.

Source

pub fn into_inner(self) -> S

Consumes the service and returns the inner service.

Trait Implementations§

Source§

impl<S: Clone, E: Clone> Clone for ExecutorService<S, E>

Source§

fn clone(&self) -> ExecutorService<S, E>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<S, E, Req> Service<Req> for ExecutorService<S, E>
where S: Service<Req> + Clone + Send + 'static, S::Future: Send, S::Response: Send + 'static, S::Error: Send + 'static, E: Executor, Req: Send + 'static,

Source§

type Response = <S as Service<Req>>::Response

Responses given by the service.
Source§

type Error = ExecutorError<<S as Service<Req>>::Error>

Errors produced by the service.
Source§

type Future = ExecutorFuture<<S as Service<Req>>::Response, <S as Service<Req>>::Error>

The future response value.
Source§

fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>

Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
Source§

fn call(&mut self, req: Req) -> Self::Future

Process the request and return the response asynchronously. Read more

Auto Trait Implementations§

§

impl<S, E> Freeze for ExecutorService<S, E>
where S: Freeze, E: Freeze,

§

impl<S, E> RefUnwindSafe for ExecutorService<S, E>

§

impl<S, E> Send for ExecutorService<S, E>
where S: Send, E: Send,

§

impl<S, E> Sync for ExecutorService<S, E>
where S: Sync, E: Sync,

§

impl<S, E> Unpin for ExecutorService<S, E>
where S: Unpin, E: Unpin,

§

impl<S, E> UnsafeUnpin for ExecutorService<S, E>
where S: UnsafeUnpin, E: UnsafeUnpin,

§

impl<S, E> UnwindSafe for ExecutorService<S, E>
where S: UnwindSafe, E: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.