Skip to main content

Receiver

Struct Receiver 

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

Receives values from the associated Sender.

Instances are created by the channel function.

Implementations§

Source§

impl<T> Receiver<T>

Source

pub fn has_changed(&self) -> bool

Checks if this channel contains a message that this receiver has not yet seen. The new value is not marked as seen.

Although this method is called has_changed, it does not check new messages for equality, so this call will return true even if the new message is equal to the old message.

Source

pub fn mark_seen(&mut self)

Marks the new value if it exists as seen.

Source

pub fn changed(&mut self) -> Notification<'_, T>

Waits for a change notification, then marks the newest value as seen.

If the newest value in the channel has not yet been marked seen when this method is called, the method marks that value seen and returns immediately. If the newest value has already been marked seen, then the method sleeps until a new message is sent by the Sender connected to this Receiver, or until the Sender is dropped.

This method returns an error if and only if the Sender is dropped.

Source

pub fn borrow(&self) -> ValueRef<'_, T>

Returns a reference to the most recently sent value.

This method does not mark the returned value as seen, so future calls to Self::changed may return immediately even if you have already seen the value with a call to borrow.

Care must be taken not to hold a ref, when the sender is setting a new value. This includes not holding a ref across await points and not explicitly yielding control to other fibers while holding a ref.

If the stored type supports internal mutability, it can be changed transparently (without notifying) for the watchers through the reference returned from this function. This is not an intended use case, but it is possible.

Consider using Self::get or Self::get_cloned instead.

Source

pub fn get(&self) -> T
where T: Copy,

Returns a copy of the most recently sent value.

This method does not mark the returned value as seen, so future calls to Self::changed may return immediately even if you have already seen the value with a call to borrow.

Source

pub fn get_cloned(&self) -> T
where T: Clone,

Returns the most recently sent value cloned.

This method does not mark the returned value as seen, so future calls to Self::changed may return immediately even if you have already seen the value with a call to borrow.

Trait Implementations§

Source§

impl<T> Clone for Receiver<T>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for Receiver<T>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for Receiver<T>

§

impl<T> !Send for Receiver<T>

§

impl<T> !Sync for Receiver<T>

§

impl<T> !UnwindSafe for Receiver<T>

§

impl<T> Freeze for Receiver<T>
where Rc<State<T>>: Freeze,

§

impl<T> Unpin for Receiver<T>
where Rc<State<T>>: Unpin,

§

impl<T> UnsafeUnpin for Receiver<T>
where Rc<State<T>>: UnsafeUnpin,

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> IntoClones<(T, T)> for T
where T: Clone,

Source§

impl<T> IntoClones<(T, T, T)> for T
where T: Clone,

Source§

impl<T> IntoClones<(T, T, T, T)> for T
where T: Clone,

Source§

impl<T> IntoClones<(T, T, T, T, T)> for T
where T: Clone,

Source§

impl<T> IntoClones<(T, T, T, T, T, T)> for T
where T: Clone,

Source§

impl<T> IntoClones<(T, T, T, T, T, T, T)> for T
where T: Clone,

Source§

impl<T> IntoClones<(T, T, T, T, T, T, T, T)> for T
where T: Clone,

Source§

impl<T> IntoClones<(T, T, T, T, T, T, T, T, T)> for T
where T: Clone,

Source§

impl<T> IntoClones<(T, T, T, T, T, T, T, T, T, T)> for T
where T: Clone,

Source§

impl<T> IntoClones<(T, T, T, T, T, T, T, T, T, T, T)> for T
where T: Clone,

Source§

impl<T> IntoClones<(T,)> for T
where T: Clone,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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 = !

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

fn try_from(value: U) -> Result<T, !>

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.