The enum Either with variants Left and Right and trait
implementations including Iterator, Read, Write.
Either has methods that are similar to Option and Result.
Includes convenience macros try_left!() and try_right!() to use for
short-circuiting logic.
Please read the API documentation here
How to use with cargo:
[dependencies] either = "1"
- 1.15.0- Fix serdesupport when building withoutstd, by @klkvr (#119)
- Use a more common stdfeature for default enablement, deprecating theuse_stdfeature as a mere alias of the new name.
 
- Fix 
- 1.14.0- MSRV: eithernow requires Rust 1.63 or later.
- Implement fmt::WriteforEither, by @yotamofek (#113)
- Replace Into<Result> for EitherwithFrom<Either> for Result, by @cuviper (#118)
 
- MSRV: 
- 1.13.0- Add new methods .cloned()and.copied(), by @ColonelThirtyTwo (#107)
 
- Add new methods 
- 1.12.0- MSRV: eithernow requires Rust 1.37 or later.
- Specialize nth_backforEitherandIterEither, by @cuviper (#106)
 
- MSRV: 
- 1.11.0- Add new trait IntoEitherthat is useful to convert toEitherin method chains, by @SFM61319 (#101)
 
- Add new trait 
- 1.10.0- Add new methods .factor_iter(),.factor_iter_mut(), and.factor_into_iter()that returnEitheritems, plus.iter()and.iter_mut()to convert to direct reference iterators; by @aj-bagwell and @cuviper (#91)
 
- Add new methods 
- 1.9.0- Add new methods .map_either()and.map_either_with(), by @nasadorian (#82)
 
- Add new methods 
- 1.8.1- Clarified that the multiple licenses are combined with OR.
 
- 1.8.0- MSRV: eithernow requires Rust 1.36 or later.
- Add new methods .as_pin_ref()and.as_pin_mut()to project a pinnedEitheras innerPinvariants, by @cuviper (#77)
- Implement the Futuretrait, by @cuviper (#77)
- Specialize more methods of the iotraits, by @Kixunil and @cuviper (#75)
 
- MSRV: 
- 1.7.0- MSRV: eithernow requires Rust 1.31 or later.
- Export the macro for_both!, by @thomaseizinger (#58)
- Implement the io::Seektrait, by @Kerollmops (#60)
- Add new method .either_into()forIntoconversion, by @TonalidadeHidrica (#63)
- Add new methods .factor_ok(),.factor_err(), and.factor_none(), by @zachs18 (#67)
- Specialize sourcein theErrorimplementation, by @thomaseizinger (#69)
- Specialize more iterator methods and implement the FusedIteratortrait, by @Ten0 (#66) and @cuviper (#71)
- Specialize Clone::clone_from, by @cuviper (#72)
 
- MSRV: 
- 1.6.1- Add new methods .expect_left(),.unwrap_left(), and equivalents on the right, by @spenserblack (#51)
 
- Add new methods 
- 1.6.0- Add new modules serde_untaggedandserde_untagged_optionalto customize howEitherfields are serialized in other types, by @MikailBag (#49)
 
- Add new modules 
- 1.5.3- Add new method .map()forEither<T, T>by @nvzqz (#40).
 
- Add new method 
- 1.5.2- Add new methods .left_or(),.left_or_default(),.left_or_else(), and equivalents on the right, by @DCjanus (#36)
 
- Add new methods 
- 1.5.1- Add AsRefandAsMutimplementations for common unsized types:str,[T],CStr,OsStr, andPath, by @mexus (#29)
 
- Add 
- 1.5.0- Add new methods .factor_first(),.factor_second()and.into_inner()by @mathstuf (#19)
 
- Add new methods 
- 1.4.0- Add inherent method .into_iter()by @cuviper (#12)
 
- Add inherent method 
- 1.3.0- Add opt-in serde support by @hcpl
 
- 1.2.0- Add method .either_with()by @Twey (#13)
 
- Add method 
- 1.1.0- Add methods left_and_then,right_and_thenby @rampantmonkey
- Include license files in the repository and released crate
 
- Add methods 
- 1.0.3- Add crate categories
 
- 1.0.2- Forward more Iteratormethods
- Implement ExtendforEither<L, R>ifL, Rdo.
 
- Forward more 
- 1.0.1- Fix Iteratorimpl forEitherto forward.fold().
 
- Fix 
- 1.0.0- Add default crate feature use_stdso that you can opt out of linking to std.
 
- Add default crate feature 
- 0.1.7- Add methods .map_left(),.map_right()and.either().
- Add more documentation
 
- Add methods 
- 0.1.3- Implement Display, Error
 
- 0.1.2- Add macros try_left!andtry_right!.
 
- Add macros 
- 0.1.1- Implement Deref, DerefMut
 
- 0.1.0- Initial release
- Support Iterator, Read, Write
 
Dual-licensed to be compatible with the Rust project.
Licensed under the Apache License, Version 2.0 https://www.apache.org/licenses/LICENSE-2.0 or the MIT license https://opensource.org/licenses/MIT, at your option. This file may not be copied, modified, or distributed except according to those terms.