use crate::decode::state;
pub enum Value<F: state::Set> {
SyncOpen(F::SyncOpen),
SyncFinished(F::SyncFinished),
TaskOpen(F::TaskOpen),
TaskFinished(F::TaskFinished),
DuplexOpen(F::DuplexOpen),
DuplexFinished(F::DuplexFinished),
UnsupportedOpen(F::UnsupportedOpen),
UnsupportedFinished(F::UnsupportedFinished),
}
pub trait Fold<F: state::Set>: Sized {
type Output;
fn apply(self, value: Value<F>) -> Self::Output;
}
pub trait Flow<F: state::Set>: Sized {
fn fold<V: Fold<F>>(self, visit: V) -> V::Output;
}