From 13e444b05c10a4a27b63644d4bbc1a4ece9d6ca7 Mon Sep 17 00:00:00 2001 From: Mikail Bagishov Date: Wed, 9 Sep 2020 23:59:08 +0300 Subject: [PATCH] improve impl --- tokio/src/sync/mpsc/chan.rs | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/tokio/src/sync/mpsc/chan.rs b/tokio/src/sync/mpsc/chan.rs index 5eddbd3ad92..869e721563a 100644 --- a/tokio/src/sync/mpsc/chan.rs +++ b/tokio/src/sync/mpsc/chan.rs @@ -360,24 +360,7 @@ impl Semaphore for (crate::sync::batch_semaphore::Semaphore, usize) { } fn is_closed(&self) -> bool { - // TODO find more efficient way - struct NoopWaker; - impl crate::util::Wake for NoopWaker { - fn wake(self: std::sync::Arc) {} - fn wake_by_ref(_arc_self: &std::sync::Arc) {} - } - let waker = std::sync::Arc::new(NoopWaker); - let waker = crate::util::waker_ref(&waker); - let mut noop_cx = std::task::Context::from_waker(&*waker); - let mut permit = Permit::new(); - match permit.poll_acquire(&mut noop_cx, 1, &self.0) { - Poll::Ready(Err(_)) => true, - Poll::Ready(Ok(())) => { - permit.release(1, &self.0); - false - } - Poll::Pending => false, - } + self.0.is_closed() } fn is_idle(&self) -> bool {