Struct just_watch::Receiver
source · pub struct Receiver<T> { /* private fields */ }
Expand description
Implementations§
source§impl<T> Receiver<T>
impl<T> Receiver<T>
sourcepub fn borrow(&self) -> Ref<'_, T>
pub fn borrow(&self) -> Ref<'_, T>
Returns a reference to the most recently sent value.
Outstanding borrows hold a read lock. This means that long lived borrows could cause the send half to block. It is recommended to keep the borrow as short lived as possible.
Examples
let (_, rx) = just_watch::channel("hello");
assert_eq!(*rx.borrow(), "hello");
sourcepub async fn changed(&mut self) -> Result<(), RecvError>
pub async fn changed(&mut self) -> Result<(), RecvError>
Wait for a change notification.
Returns when a new value has been sent by the Sender
since the last
time changed()
was called. When the Sender
half is dropped, Err
is
returned.
Examples
let (tx, mut rx) = just_watch::channel("hello");
let task = executor.spawn(async move {
tx.send("goodbye").unwrap();
});
assert!(rx.changed().await.is_ok());
assert_eq!(*rx.borrow(), "goodbye");
// The `tx` handle has been dropped
assert!(rx.changed().await.is_err());
task.await;
});
source§impl<T: Clone> Receiver<T>
impl<T: Clone> Receiver<T>
sourcepub async fn recv(&mut self) -> Result<T, RecvError>
pub async fn recv(&mut self) -> Result<T, RecvError>
A convenience helper which combines calling Receiver::changed()
and
Receiver::borrow()
where the borrowed value is cloned and returned.
Note: If this is the first time the function is called on a Receiver
instance, then the function will wait until a new value is sent into the channel.
None
is returned if the Sender
half is dropped.
Examples
let (tx, mut rx) = just_watch::channel("hello");
let task = executor.spawn(async move {
tx.send("goodbye").unwrap();
});
assert_eq!(*rx.borrow(), "hello");
// Waits for the new task to spawn and send the value.
let v = rx.recv().await.unwrap();
assert_eq!(v, "goodbye");
let v = rx.recv().await;
assert!(v.is_err());
task.await;
Trait Implementations§
Auto Trait Implementations§
impl<T> RefUnwindSafe for Receiver<T>
impl<T> Send for Receiver<T>where T: Send + Sync,
impl<T> Sync for Receiver<T>where T: Send + Sync,
impl<T> Unpin for Receiver<T>
impl<T> UnwindSafe for Receiver<T>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more