2024-10-16 14:15:33 +03:00
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]
2024-10-16 15:19:37 +03:00
either = "1.12"
2024-10-16 14:15:33 +03:00
Recent Changes
--------------
2024-10-16 15:19:37 +03:00
- 1.13.0
- Add new methods `` .cloned() `` and `` .copied() `` , by @ColonelThirtyTwo (#107)
- 1.12.0
- **MSRV** : `` either `` now requires Rust 1.37 or later.
- Specialize `` nth_back `` for `` Either `` and `` IterEither `` , by @cuviper (#106)
- 1.11.0
- Add new trait `` IntoEither `` that is useful to convert to `` Either `` in method chains,
by @SFM61319 (#101)
2024-10-16 14:15:33 +03:00
- 1.10.0
- Add new methods `` .factor_iter() `` , `` .factor_iter_mut() `` , and `` .factor_into_iter() ``
that return `` Either `` items, plus `` .iter() `` and `` .iter_mut() `` to convert to direct
referene iterators; by @aj-bagwell and @cuviper (#91)
- 1.9.0
- Add new methods `` .map_either() `` and `` .map_either_with() `` , by @nasadorian (#82)
- 1.8.1
- Clarified that the multiple licenses are combined with OR.
- 1.8.0
- **MSRV** : `` either `` now requires Rust 1.36 or later.
- Add new methods `` .as_pin_ref() `` and `` .as_pin_mut() `` to project a
pinned `` Either `` as inner `` Pin `` variants, by @cuviper (#77)
- Implement the `` Future `` trait, by @cuviper (#77)
- Specialize more methods of the `` io `` traits, by @Kixunil and @cuviper (#75)
- 1.7.0
- **MSRV** : `` either `` now requires Rust 1.31 or later.
- Export the macro `` for_both! `` , by @thomaseizinger (#58)
- Implement the `` io::Seek `` trait, by @Kerollmops (#60)
- Add new method `` .either_into() `` for `` Into `` conversion, by @TonalidadeHidrica (#63)
- Add new methods `` .factor_ok() `` , `` .factor_err() `` , and `` .factor_none() `` ,
by @zachs18 (#67)
- Specialize `` source `` in the `` Error `` implementation, by @thomaseizinger (#69)
- Specialize more iterator methods and implement the `` FusedIterator `` trait,
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)
- 1.6.0
- Add new modules `` serde_untagged `` and `` serde_untagged_optional `` to customize
how `` Either `` fields are serialized in other types, by @MikailBag (#49)
- 1.5.3
- Add new method `` .map() `` for `` Either<T, T> `` by @nvzqz (#40).
- 1.5.2
- Add new methods `` .left_or() `` , `` .left_or_default() `` , `` .left_or_else() `` ,
and equivalents on the right, by @DCjanus (#36)
- 1.5.1
- Add `` AsRef `` and `` AsMut `` implementations for common unsized types:
`` str `` , `` [T] `` , `` CStr `` , `` OsStr `` , and `` Path `` , by @mexus (#29)
- 1.5.0
- Add new methods `` .factor_first() `` , `` .factor_second() `` and `` .into_inner() ``
by @mathstuf (#19)
- 1.4.0
- Add inherent method `` .into_iter() `` by @cuviper (#12)
- 1.3.0
- Add opt-in serde support by @hcpl
- 1.2.0
- Add method `` .either_with() `` by @Twey (#13)
- 1.1.0
- Add methods `` left_and_then `` , `` right_and_then `` by @rampantmonkey
- Include license files in the repository and released crate
- 1.0.3
- Add crate categories
- 1.0.2
- Forward more `` Iterator `` methods
- Implement `` Extend `` for `` Either<L, R> `` if `` L, R `` do.
- 1.0.1
- Fix `` Iterator `` impl for `` Either `` to forward `` .fold() `` .
- 1.0.0
- Add default crate feature `` use_std `` so that you can opt out of linking to
std.
- 0.1.7
- Add methods `` .map_left() `` , `` .map_right() `` and `` .either() `` .
- Add more documentation
- 0.1.3
- Implement Display, Error
- 0.1.2
- Add macros `` try_left! `` and `` try_right! `` .
- 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.