Try pushing and popping before acquiring a listener
This commit is contained in:
parent
b48d7df004
commit
e4cc505951
1 changed files with 10 additions and 0 deletions
10
src/queue.rs
10
src/queue.rs
|
@ -76,6 +76,12 @@ impl<T> Queue<T> {
|
||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
pub async fn push(&self, mut item: T) {
|
pub async fn push(&self, mut item: T) {
|
||||||
|
let Some(returned_item) = self.try_push(item) else {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
item = returned_item;
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let listener = self.inner.push_notify.listen().await;
|
let listener = self.inner.push_notify.listen().await;
|
||||||
|
|
||||||
|
@ -114,6 +120,10 @@ impl<T> Queue<T> {
|
||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
pub async fn pop(&self) -> T {
|
pub async fn pop(&self) -> T {
|
||||||
|
if let Some(item) = self.try_pop() {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let listener = self.inner.pop_notify.listen().await;
|
let listener = self.inner.pop_notify.listen().await;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue