#![cfg(any(feature = "async", doc))]
use core::task::Waker;
use crate::IterComponent;
pub mod mutable;
pub mod non_mutable;
pub trait AsyncIterComp: IterComponent {
fn wake_middle_iter(&self);
fn register_prod_waker(&self, waker: &Waker);
fn take_prod_waker(&self) -> Option<Waker>;
fn wake_prod(&self);
fn register_work_waker(&self, waker: &Waker);
fn take_work_waker(&self) -> Option<Waker>;
fn wake_work(&self);
fn register_cons_waker(&self, waker: &Waker);
fn take_cons_waker(&self) -> Option<Waker>;
fn wake_cons(&self);
}