(
self: core::pin::Pin<&mut Self>,
cx: &mut core::task::Context<'_>,
)
| 550 | impl futures::future::Future for IdWait { |
| 551 | type Output = (); |
| 552 | fn poll( |
| 553 | self: core::pin::Pin<&mut Self>, |
| 554 | cx: &mut core::task::Context<'_>, |
| 555 | ) -> core::task::Poll<Self::Output> { |
| 556 | { |
| 557 | let val = &mut WAKERS.lock()[self.id]; |
| 558 | match val { |
| 559 | IdWaker::None => { |
| 560 | let aw = AtomicWaker::new(); |
| 561 | aw.register(&cx.waker()); |
| 562 | *val = IdWaker::Waker(aw); |
| 563 | |
| 564 | return core::task::Poll::Pending; |
| 565 | } |
| 566 | IdWaker::Done => { |
| 567 | *val = IdWaker::None; |
| 568 | return core::task::Poll::Ready(()); |
| 569 | } |
| 570 | IdWaker::Waker(e) => { |
| 571 | e.register(&cx.waker()); |
| 572 | } |
| 573 | } |
| 574 | } |
| 575 | { |
| 576 | let val = &mut WAKERS.lock()[self.id]; |
| 577 | match val { |
| 578 | IdWaker::Done => { |
| 579 | *val = IdWaker::None; |
| 580 | core::task::Poll::Ready(()) |
| 581 | } |
| 582 | _ => core::task::Poll::Pending, |
| 583 | } |
| 584 | } |
| 585 | } |
| 586 | } |
| 587 | |
| 588 | #[repr(u32)] |
nothing calls this directly
no outgoing calls
no test coverage detected