Struct PollSender
pub struct PollSender<T> { /* private fields */ }
A wrapper around mpsc::Sender that can be polled.
Implementations
impl<T: Send> PollSender<T>
fn new(sender: Sender<T>) -> SelfCreates a new
PollSender.fn poll_reserve(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), PollSendError<T>>>Attempts to prepare the sender to receive a value.
This method must be called and return
Poll::Ready(Ok(()))prior to each call tosend_item.This method returns
Poll::Readyonce the underlying channel is ready to receive a value, by reserving a slot in the channel for the item to be sent. If this method returnsPoll::Pending, the current task is registered to be notified (viacx.waker().wake_by_ref()) whenpoll_reserveshould be called again.Errors
If the channel is closed, an error will be returned. This is a permanent state.
fn send_item(&mut self, value: T) -> Result<(), PollSendError<T>>Sends an item to the channel.
Before calling
send_item,poll_reservemust be called with a successful return value ofPoll::Ready(Ok(())).Errors
If the channel is closed, an error will be returned. This is a permanent state.
Panics
If
poll_reservewas not successfully called prior to callingsend_item, then this method will panic.fn is_closed(&self) -> boolChecks whether this sender is closed.
The underlying channel that this sender was wrapping may still be open.
fn get_ref(&self) -> Option<&Sender<T>>Gets a reference to the
Senderof the underlying channel.If
PollSenderhas been closed,Noneis returned. The underlying channel that this sender was wrapping may still be open.fn close(&mut self)Closes this sender.
No more messages will be able to be sent from this sender, but the underlying channel will remain open until all senders have dropped, or until the
Receivercloses the channel.If a slot was previously reserved by calling
poll_reserve, then a final call can be made tosend_itemin order to consume the reserved slot. After that, no further sends will be possible. If you do not intend to send another item, you can release the reserved slot back to the underlying sender by callingabort_send.fn abort_send(&mut self) -> boolAborts the current in-progress send, if any.
Returns
trueif a send was aborted. If the sender was closed prior to callingabort_send, then the sender will remain in the closed state, otherwise the sender will be ready to attempt another send.
Trait Implementations
impl<T> Clone for PollSender<T>
fn clone(&self) -> PollSender<T>Clones this
PollSender.The resulting
PollSenderwill have an initial state identical to callingPollSender::new.
impl<T: Debug> Debug for PollSender<T>
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl<T: Send> Sink<T> for PollSender<T>
type Error = PollSendError<T>;fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>fn start_send(self: Pin<&mut Self>, item: T) -> Result<(), Self::Error>fn poll_close(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>
Auto Trait Implementations
impl<T> !RefUnwindSafe for PollSender<T>
impl<T> !UnwindSafe for PollSender<T>
impl<T> Freeze for PollSender<T>
where
Option<Sender<T>>: Freeze,
State<T>: Freeze,
PollSenderFuture<T>: Freeze,
impl<T> Send for PollSender<T>
where
Option<Sender<T>>: Send,
State<T>: Send,
PollSenderFuture<T>: Send,
impl<T> Sync for PollSender<T>
where
Option<Sender<T>>: Sync,
State<T>: Sync,
PollSenderFuture<T>: Sync,
impl<T> Unpin for PollSender<T>
where
Option<Sender<T>>: Unpin,
State<T>: Unpin,
PollSenderFuture<T>: Unpin,
impl<T> UnsafeUnpin for PollSender<T>
where
Option<Sender<T>>: UnsafeUnpin,
State<T>: UnsafeUnpin,
PollSenderFuture<T>: UnsafeUnpin,
Blanket Implementations
impl<T> Any for PollSender<T>
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for PollSender<T>
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for PollSender<T>
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for PollSender<T>
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for PollSender<T>
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for PollSender<T>
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T, U> Into<U> for PollSender<T>
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for PollSender<T>
where
U: Into<T>,
type Error = Infallible;fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto<U> for PollSender<T>
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>