use serde::{Deserialize, Serialize};
use crate::{Presentable, Presenter};
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
pub enum Either<A, B> {
Left(A),
Right(B),
}
#[async_trait::async_trait(?Send)]
impl<A, B> Presentable for Either<A, B>
where
A: Presentable,
B: Presentable,
{
async fn present<'output, PR>(&self, presenter: &mut PR) -> Result<(), PR::Error>
where
PR: Presenter<'output>,
{
match self {
Self::Left(a) => a.present(presenter).await,
Self::Right(b) => b.present(presenter).await,
}
}
}