use crate::{error::RecvError, io::Port};
use alloc::boxed::Box;
use alloc::vec::Vec;
#[async_trait::async_trait]
pub trait InputPort<T: Send>: Port<T> {
fn is_empty(&self) -> bool;
async fn recv(&mut self) -> Result<Option<T>, RecvError>;
async fn recv_all(&mut self) -> Result<Vec<T>, RecvError> {
let mut inputs = Vec::new();
while let Some(input) = self.recv().await? {
inputs.push(input);
}
Ok(inputs)
}
}