From 473abed34f9b02e778c9a111799bf57e9490fdfb Mon Sep 17 00:00:00 2001 From: andriyDev Date: Tue, 28 Oct 2025 23:44:23 -0700 Subject: [PATCH] Add cancel safety guarantees to `recv` and `send`. --- src/lib.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 61e0b53..eb678e8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -263,6 +263,11 @@ impl Sender { /// assert_eq!(s.send(2).await, Err(SendError(2))); /// # }); /// ``` + /// + /// # Cancel safety + /// + /// This method is **not** cancel safe (currently). The message passed in may be lost if the + /// returned future is dropped before polling to completion. pub fn send(&self, msg: T) -> Send<'_, T> { Send::_new(SendInner { sender: self, @@ -670,6 +675,11 @@ impl Receiver { /// assert_eq!(r.recv().await, Err(RecvError)); /// # }); /// ``` + /// + /// # Cancel safety + /// + /// This method is cancel safe. Dropping the returned future will not result in any lost + /// messages. pub fn recv(&self) -> Recv<'_, T> { Recv::_new(RecvInner { receiver: self,