Struct Sender

Source
pub struct Sender<T> { /* private fields */ }
Expand description

Slot is very similar to unbounded channel but only stores last value sent

I.e. if you want to send some value between from producer to a consumer and if consumer is slow it should skip old values, the slot is a structure for the task. The transmission end of a channel which is used to send values

If the receiver is not fast enough only the last value is preserved and other ones are discarded.

Implementations§

Source§

impl<T> Sender<T>

Source

pub fn swap(&self, value: T) -> Result<Option<T>, SendError<T>>

Sets the new new value of the stream and notifies the consumer if any

This function will store the value provided as the current value for this channel, replacing any previous value that may have been there. If the receiver may still be able to receive this message, then Ok is returned with the previous value that was in this channel.

If Ok(Some) is returned then this value overwrote a previous value, and the value was never received by the receiver. If Ok(None) is returned, then no previous value was found and the value is queued up to be received by the receiver.

§Errors

This function will return an Err if the receiver has gone away and it’s impossible to send this value to the receiver. The error returned retains ownership of the value provided and can be extracted, if necessary.

Source

pub fn poll_cancel(&mut self) -> Poll<(), ()>

Polls this Sender half to detect whether the Receiver this has paired with has gone away.

This function can be used to learn about when the Receiver (consumer) half has gone away and nothing will be able to receive a message sent from send (or swap).

If Ready is returned then it means that the Receiver has disappeared and the result this Sender would otherwise produce should no longer be produced.

If NotReady is returned then the Receiver is still alive and may be able to receive a message if sent. The current task, however, is scheduled to receive a notification if the corresponding Receiver goes away.

§Panics

Like Future::poll, this function will panic if it’s not called from within the context of a task. In other words, this should only ever be called from inside another future.

If you’re calling this function from a context that does not have a task, then you can use the is_canceled API instead.

Source

pub fn is_canceled(&self) -> bool

Tests to see whether this Sender’s corresponding Receiver has gone away.

This function can be used to learn about when the Receiver (consumer) half has gone away and nothing will be able to receive a message sent from send.

Note that this function is intended to not be used in the context of a future. If you’re implementing a future you probably want to call the poll_cancel function which will block the current task if the cancellation hasn’t happened yet. This can be useful when working on a non-futures related thread, though, which would otherwise panic if poll_cancel were called.

Trait Implementations§

Source§

impl<T: Debug> Debug for Sender<T>

Source§

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

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

impl<T> Drop for Sender<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<T> Sink for Sender<T>

Source§

type SinkItem = T

The type of value that the sink accepts.
Source§

type SinkError = SendError<T>

The type of value produced by the sink when an error occurs.
Source§

fn start_send(&mut self, item: T) -> StartSend<T, SendError<T>>

Begin the process of sending a value to the sink. Read more
Source§

fn poll_complete(&mut self) -> Poll<(), Self::SinkError>

Flush all output from this sink, if necessary. Read more
Source§

fn close(&mut self) -> Poll<(), Self::SinkError>

A method to indicate that no more values will ever be pushed into this sink. Read more
Source§

fn wait(self) -> Wait<Self>
where Self: Sized,

Creates a new object which will produce a synchronous sink. Read more
Source§

fn with<U, F, Fut>(self, f: F) -> With<Self, U, F, Fut>
where F: FnMut(U) -> Fut, Fut: IntoFuture<Item = Self::SinkItem>, <Fut as IntoFuture>::Error: From<Self::SinkError>, Self: Sized,

Composes a function in front of the sink. Read more
Source§

fn with_flat_map<U, F, St>(self, f: F) -> WithFlatMap<Self, U, F, St>
where F: FnMut(U) -> St, St: Stream<Item = Self::SinkItem, Error = Self::SinkError>, Self: Sized,

Composes a function in front of the sink. Read more
Source§

fn sink_map_err<F, E>(self, f: F) -> SinkMapErr<Self, F>
where F: FnOnce(Self::SinkError) -> E, Self: Sized,

Transforms the error returned by the sink.
Source§

fn sink_from_err<E>(self) -> SinkFromErr<Self, E>
where E: From<Self::SinkError>, Self: Sized,

Map this sink’s error to any error implementing From for this sink’s Error, returning a new sink. Read more
Source§

fn buffer(self, amt: usize) -> Buffer<Self>
where Self: Sized,

Adds a fixed-size buffer to the current sink. Read more
Source§

fn fanout<S>(self, other: S) -> Fanout<Self, S>
where Self: Sized, Self::SinkItem: Clone, S: Sink<SinkItem = Self::SinkItem, SinkError = Self::SinkError>,

Fanout items to multiple sinks. Read more
Source§

fn flush(self) -> Flush<Self>
where Self: Sized,

A future that completes when the sink has finished processing all pending requests. Read more
Source§

fn send(self, item: Self::SinkItem) -> Send<Self>
where Self: Sized,

A future that completes after the given item has been fully processed into the sink, including flushing. Read more
Source§

fn send_all<S>(self, stream: S) -> SendAll<Self, S>
where S: Stream<Item = Self::SinkItem>, Self::SinkError: From<<S as Stream>::Error>, Self: Sized,

A future that completes after the given stream has been fully processed into the sink, including flushing. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Sender<T>

§

impl<T> RefUnwindSafe for Sender<T>

§

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

§

impl<T> Sync for Sender<T>
where T: Send,

§

impl<T> Unpin for Sender<T>

§

impl<T> UnwindSafe for Sender<T>

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.

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.