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.