169 lines
3.9 KiB
ReStructuredText
169 lines
3.9 KiB
ReStructuredText
|
|
||
|
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/bluss/either/workflows/CI/badge.svg?branch=master
|
||
|
.. _build_status: https://github.com/bluss/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.8"
|
||
|
|
||
|
|
||
|
Recent Changes
|
||
|
--------------
|
||
|
|
||
|
- 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.
|