pub trait TryExt {
type Output;
type Error;
type Map<U>: TryExt<Output = U, Error = Self::Error>;
fn from_output(o: Self::Output) -> Self;
fn branch<U>(self) -> ControlFlow<Self::Map<U>, Self::Output>;
}
pub trait TryExt {
type Output;
type Error;
type Map<U>: TryExt<Output = U, Error = Self::Error>;
fn from_output(o: Self::Output) -> Self;
fn branch<U>(self) -> ControlFlow<Self::Map<U>, Self::Output>;
}