Pre: Crib map_{left,right} for Either.

This commit is contained in:
Nick Alexander 2017-06-06 13:18:31 -07:00
parent 634b7a816b
commit a4fc04ea86

View file

@ -39,6 +39,27 @@ pub enum Either<L, R> {
Right(R), Right(R),
} }
// Cribbed from https://github.com/bluss/either/blob/f793721f3fdeb694f009e731b23a2858286bc0d6/src/lib.rs#L219-L259.
impl<L, R> Either<L, R> {
pub fn map_left<F, M>(self, f: F) -> Either<M, R>
where F: FnOnce(L) -> M
{
match self {
Left(l) => Left(f(l)),
Right(r) => Right(r),
}
}
pub fn map_right<F, S>(self, f: F) -> Either<L, S>
where F: FnOnce(R) -> S
{
match self {
Left(l) => Left(l),
Right(r) => Right(f(r)),
}
}
}
use self::Either::*; use self::Either::*;
pub type EntidOr<T> = Either<Entid, T>; pub type EntidOr<T> = Either<Entid, T>;