diff --git a/src/queue.rs b/src/queue.rs index 6e96264..041fc2f 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -76,6 +76,12 @@ impl Queue { #[doc(hidden)] pub async fn push(&self, mut item: T) { + let Some(returned_item) = self.try_push(item) else { + return; + }; + + item = returned_item; + loop { let listener = self.inner.push_notify.listen().await; @@ -114,6 +120,10 @@ impl Queue { #[doc(hidden)] pub async fn pop(&self) -> T { + if let Some(item) = self.try_pop() { + return item; + } + loop { let listener = self.inner.pop_notify.listen().await;