pub trait Eitherable {
// Required methods
fn either<L, R>(&self, left: L, right: R) -> Either<L, R> ⓘ;
fn either_else<L, FL: FnOnce() -> L, R, FR: FnOnce() -> R>(
&self,
l_func: FL,
r_func: FR,
) -> Either<L, R> ⓘ;
}Expand description
Extention trait to create the Either type from a boolean. Can be implemented on any type.
Required Methods§
Sourcefn either<L, R>(&self, left: L, right: R) -> Either<L, R> ⓘ
fn either<L, R>(&self, left: L, right: R) -> Either<L, R> ⓘ
If the boolean is true, returns Either::Left(left). If it is false, returns Either::Right(right).
left and right are evaluated eagerly. For lazy evaluation, use either_else()
§Examples
use eitherable::*;
let x = true;
assert_eq!(x.either(1, "right"), Either::Left(1));
let x = false;
assert_eq!(x.either(1, "right"), Either::Right("right"));Sourcefn either_else<L, FL: FnOnce() -> L, R, FR: FnOnce() -> R>(
&self,
l_func: FL,
r_func: FR,
) -> Either<L, R> ⓘ
fn either_else<L, FL: FnOnce() -> L, R, FR: FnOnce() -> R>( &self, l_func: FL, r_func: FR, ) -> Either<L, R> ⓘ
Same as either(), but the values are lazily evaluated.
§Examples
use eitherable::*;
let x = true;
assert_eq!(x.either_else(|| 1,|| "right"), Either::Left(1));
let x = false;
assert_eq!(x.either_else(|| 1,|| "right"), Either::Right("right"));Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.