use crate::{Result, TryPublishError};
use core::future::Future;
pub trait EventQueue<T>: Send + Sync + 'static {
fn new(capacity: Option<usize>) -> Self;
fn publish(&self, item: T) -> impl Future<Output = Result<()>> + Send;
fn try_publish(&self, item: T) -> core::result::Result<(), TryPublishError<T>>;
fn close(&self) -> impl Future<Output = ()> + Send;
#[doc(hidden)]
fn publish_internal(&self, item: T) -> impl Future<Output = Result<()>> + Send;
fn recv(&self) -> impl Future<Output = Result<T>> + Send;
}