pub enum SkipOrFatal<Skip, Fatal> {
Skip(Skip),
Fatal(Fatal),
}
pub trait IntoSkipOrFatal {
type Skip;
type Fatal;
fn into_skip_or_fatal(self) -> SkipOrFatal<Self::Skip, Self::Fatal>;
}
impl<Skip, Fatal> IntoSkipOrFatal for SkipOrFatal<Skip, Fatal> {
type Skip = Skip;
type Fatal = Fatal;
fn into_skip_or_fatal(self) -> Self {
self
}
}
impl<Error> IntoSkipOrFatal for Option<Error> {
type Skip = ();
type Fatal = Error;
fn into_skip_or_fatal(self) -> SkipOrFatal<Self::Skip, Self::Fatal> {
match self {
None => SkipOrFatal::Skip(()),
Some(error) => SkipOrFatal::Fatal(error),
}
}
}