pub trait IOutBox<E>where
E: Executor,{
// Required methods
fn new(aggregate_id: String, topic: String, state: String) -> Self;
fn add<'async_trait>(
executor: Arc<RwLock<E>, Global>,
outboxes: Vec<OutBox, Global>
) -> Pin<Box<dyn Future<Output = Result<(), BaseError>> + Send + 'async_trait, Global>>;
fn get<'async_trait>(
executor: Arc<RwLock<E>, Global>
) -> Pin<Box<dyn Future<Output = Result<Vec<OutBox, Global>, BaseError>> + Send + 'async_trait, Global>>;
fn update<'life0, 'async_trait>(
&'life0 self,
executor: Arc<RwLock<E>, Global>
) -> Pin<Box<dyn Future<Output = Result<(), BaseError>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
Self: 'async_trait;
}