either
either copied to clipboard
The enum Either with variants Left and Right is a general purpose sum type with two cases.
Either
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__
__ https://docs.rs/either/
|build_status|_ |crates|_
.. |build_status| image:: https://github.com/rayon-rs/either/workflows/CI/badge.svg?branch=main .. _build_status: https://github.com/rayon-rs/either/actions
.. |crates| image:: https://img.shields.io/crates/v/either.svg .. _crates: https://crates.io/crates/either
How to use with cargo::
[dependencies]
either = "1.12"
Recent Changes
-
1.12.0
-
MSRV:
eithernow requires Rust 1.37 or later. -
Specialize
nth_backforEitherandIterEither, by @cuviper (#106)
-
-
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 referene 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)
-
-
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)
-
-
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
License
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.