relay_system

Struct BroadcastResponse

source
pub struct BroadcastResponse<T>(/* private fields */)
where
    T: Clone;
Expand description

Variation of AsyncResponse that efficiently broadcasts responses to many requests.

This response behavior is useful for services that cache or debounce requests. Instead of responding to each equivalent request via its individual sender, the broadcast behavior allows to create a BroadcastChannel that efficiently resolves all pending requests once the value is ready.

Similar to AsyncResponse, the service receives a sender that it can use to send a value directly back to the waiting request. Additionally, the sender can be converted into a channel or attached to an already existing channel, if the service expects more requests while computing the response.

See FromMessage and Service for implementation advice and examples.

Trait Implementations§

source§

impl<T: Clone> Debug for BroadcastResponse<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: Clone> MessageResponse for BroadcastResponse<T>

source§

type Sender = BroadcastSender<T>

Sends responses from the service back to the waiting recipient.
source§

type Output = BroadcastRequest<T>

The type returned from Addr::send. Read more
source§

fn channel() -> (Self::Sender, Self::Output)

Returns the response channel for an interface message.

Auto Trait Implementations§

§

impl<T> Freeze for BroadcastResponse<T>

§

impl<T> RefUnwindSafe for BroadcastResponse<T>
where T: RefUnwindSafe,

§

impl<T> Send for BroadcastResponse<T>
where T: Send,

§

impl<T> Sync for BroadcastResponse<T>
where T: Sync,

§

impl<T> Unpin for BroadcastResponse<T>
where T: Unpin,

§

impl<T> UnwindSafe for BroadcastResponse<T>
where T: 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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, 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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T