summaryrefslogtreecommitdiffstats
path: root/third_party/rust/itertools-0.8.0/README.rst
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/rust/itertools-0.8.0/README.rst
parentInitial commit. (diff)
downloadfirefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz
firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/itertools-0.8.0/README.rst')
-rw-r--r--third_party/rust/itertools-0.8.0/README.rst526
1 files changed, 526 insertions, 0 deletions
diff --git a/third_party/rust/itertools-0.8.0/README.rst b/third_party/rust/itertools-0.8.0/README.rst
new file mode 100644
index 0000000000..b0ddda3c81
--- /dev/null
+++ b/third_party/rust/itertools-0.8.0/README.rst
@@ -0,0 +1,526 @@
+
+Itertools
+=========
+
+Extra iterator adaptors, functions and macros.
+
+Please read the `API documentation here`__
+
+__ https://docs.rs/itertools/
+
+|build_status|_ |crates|_
+
+.. |build_status| image:: https://travis-ci.org/bluss/rust-itertools.svg?branch=master
+.. _build_status: https://travis-ci.org/bluss/rust-itertools
+
+.. |crates| image:: http://meritbadge.herokuapp.com/itertools
+.. _crates: https://crates.io/crates/itertools
+
+How to use with cargo:
+
+.. code:: toml
+
+ [dependencies]
+ itertools = "0.8"
+
+How to use in your crate:
+
+.. code:: rust
+
+ #[macro_use] extern crate itertools;
+
+ use itertools::Itertools;
+
+How to contribute
+-----------------
+
+- Fix a bug or implement a new thing
+- Include tests for your new feature, preferably a quickcheck test
+- Make a Pull Request
+
+For new features, please first consider filing a PR to `rust-lang/rust <https://github.com/rust-lang/rust/>`_,
+adding your new feature to the `Iterator` trait of the standard library, if you believe it is reasonable.
+If it isn't accepted there, proposing it for inclusion in ``itertools`` is a good idea.
+The reason for doing is this is so that we avoid future breakage as with ``.flatten()``.
+However, if your feature involves heap allocation, such as storing elements in a ``Vec<T>``,
+then it can't be accepted into ``libcore``, and you should propose it for ``itertools`` directly instead.
+
+Recent Changes
+--------------
+
+- 0.8.0
+
+ - Added new adaptor ``.map_into()`` for conversions using ``Into`` by @vorner
+ - Improved ``Itertools`` docs by @JohnHeitmann
+ - The return type of ``.sorted/_by/_by_key()`` is now an iterator, not a Vec.
+ - The return type of the ``izip!(x, y)`` macro with exactly two arguments
+ is now the usual ``Iterator::zip``.
+ - Remove ``.flatten()`` in favour of std's ``.flatten()``
+ - Deprecate ``.foreach()`` in favour of std's ``.for_each()``
+ - Deprecate ``.step()`` in favour of std's ``.step_by()``
+ - Deprecate ``repeat_call`` in favour of std's ``repeat_with``
+ - Deprecate ``.fold_while()`` in favour of std's ``.try_fold()``
+ - Require Rust 1.24 as minimal version.
+
+- 0.7.11
+
+ - Add convenience methods to ``EitherOrBoth``, making it more similar to ``Option``
+ and ``Either`` by @jethrogb
+
+- 0.7.10
+
+ - No changes.
+
+- 0.7.9
+
+ - New inclusion policy: See the readme about suggesting features for std before
+ accepting them in itertools.
+ - The ``FoldWhile`` type now implements ``Eq`` and ``PartialEq`` by @jturner314
+
+- 0.7.8
+
+ - Add new iterator method ``.tree_fold1()`` which is like ``.fold1()``
+ except items are combined in a tree structure (see its docs).
+ By @scottmcm
+ - Add more ``Debug`` impls by @phimuemue: KMerge, KMergeBy, MergeJoinBy,
+ ConsTuples, Intersperse, ProcessResults, RcIter, Tee, TupleWindows, Tee,
+ ZipLongest, ZipEq, Zip.
+
+- 0.7.7
+
+ - Add new iterator method ``.into_group_map() -> HashMap<K, Vec<V>>``
+ which turns an iterator of ``(K, V)`` elements into such a hash table,
+ where values are grouped by key. By @tobz1000
+ - Add new free function ``flatten`` for the ``.flatten()`` adaptor.
+ **NOTE:** recent Rust nightlies have ``Iterator::flatten`` and thus a clash
+ with our flatten adaptor. One workaround is to use the itertools ``flatten``
+ free function.
+
+- 0.7.6
+
+ - Add new adaptor ``.multi_cartesian_product()`` which is an n-ary product
+ iterator by @tobz1000
+ - Add new method ``.sorted_by_key()`` by @Xion
+ - Provide simpler and faster ``.count()`` for ``.unique()`` and ``.unique_by()``
+
+- 0.7.5
+
+ - ``.multipeek()`` now implements ``PeekingNext``, by @nicopap.
+
+- 0.7.4
+
+ - Add new adaptor ``.update()`` by @lucasem; this adaptor is used
+ to modify an element before passing it on in an iterator chain.
+
+- 0.7.3
+
+ - Add new method ``.collect_tuple()`` by @matklad; it makes a tuple out of
+ the iterator's elements if the number of them matches **exactly**.
+ - Implement ``fold`` and ``collect`` for ``.map_results()`` which means
+ it reuses the code of the standard ``.map()`` for these methods.
+
+- 0.7.2
+
+ - Add new adaptor ``.merge_join_by`` by @srijs; a heterogeneous merge join
+ for two ordered sequences.
+
+- 0.7.1
+
+ - Iterator adaptors and iterators in itertools now use the same ``must_use``
+ reminder that the standard library adaptors do, by @matematikaedit and @bluss
+ *“iterator adaptors are lazy and do nothing unless consumed”*.
+
+- 0.7.0
+
+ - Faster ``izip!()`` by @krdln
+
+ - ``izip!()`` is now a wrapper for repeated regular ``.zip()`` and
+ a single ``.map()``. This means it optimizes as well as the standard
+ library ``.zip()`` it uses.
+ **Note:** ``multizip`` and ``izip!()`` are now different! The former
+ has a named type but the latter optimizes better.
+
+ - Faster ``.unique()``
+
+ - ``no_std`` support, which is opt-in!
+
+ - Many lovable features are still there without std, like ``izip!()``
+ or ``.format()`` or ``.merge()``, but not those that use collections.
+
+ - Trait bounds were required up front instead of just on the type:
+ ``group_by``'s ``PartialEq`` by @Phlosioneer and ``repeat_call``'s
+ ``FnMut``.
+ - Removed deprecated constructor ``Zip::new`` — use ``izip!()`` or ``multizip()``
+
+- 0.6.5
+
+ - Fix bug in ``.cartesian_product()``'s fold (which only was visible for
+ unfused iterators).
+
+- 0.6.4
+
+ - Add specific ``fold`` implementations for ``.cartesian_product()`` and
+ ``cons_tuples()``, which improves their performance in fold, foreach, and
+ iterator consumers derived from them.
+
+- 0.6.3
+
+ - Add iterator adaptor ``.positions(predicate)`` by @tmccombs
+
+- 0.6.2
+
+ - Add function ``process_results`` which can “lift” a function of the regular
+ values of an iterator so that it can process the ``Ok`` values from an
+ iterator of ``Results`` instead, by @shepmaster
+ - Add iterator method ``.concat()`` which combines all iterator elements
+ into a single collection using the ``Extend`` trait, by @srijs
+
+- 0.6.1
+
+ - Better size hint testing and subsequent size hint bugfixes by @rkarp.
+ Fixes bugs in product, interleave_shortest size hints.
+ - New iterator method ``.all_equal()`` by @phimuemue
+
+- 0.6.0
+
+ - Deprecated names were removed in favour of their replacements
+ - ``.flatten()`` does not implement double ended iteration anymore
+ - ``.fold_while()`` uses ``&mut self`` and returns ``FoldWhile<T>``, for
+ composability (#168)
+ - ``.foreach()`` and ``.fold1()`` use ``self``, like ``.fold()`` does.
+ - ``.combinations(0)`` now produces a single empty vector. (#174)
+
+- 0.5.10
+
+ - Add itertools method ``.kmerge_by()`` (and corresponding free function)
+ - Relaxed trait requirement of ``.kmerge()`` and ``.minmax()`` to PartialOrd.
+
+- 0.5.9
+
+ - Add multipeek method ``.reset_peek()``
+ - Add categories
+
+- 0.5.8
+
+ - Add iterator adaptor ``.peeking_take_while()`` and its trait ``PeekingNext``.
+
+- 0.5.7
+
+ - Add iterator adaptor ``.with_position()``
+ - Fix multipeek's performance for long peeks by using ``VecDeque``.
+
+- 0.5.6
+
+ - Add ``.map_results()``
+
+- 0.5.5
+
+ - Many more adaptors now implement ``Debug``
+ - Add free function constructor ``repeat_n``. ``RepeatN::new`` is now
+ deprecated.
+
+- 0.5.4
+
+ - Add infinite generator function ``iterate``, that takes a seed and a
+ closure.
+
+- 0.5.3
+
+ - Special-cased ``.fold()`` for flatten and put back. ``.foreach()``
+ now uses fold on the iterator, to pick up any iterator specific loop
+ implementation.
+ - ``.combinations(n)`` asserts up front that ``n != 0``, instead of
+ running into an error on the second iterator element.
+
+- 0.5.2
+
+ - Add ``.tuples::<T>()`` that iterates by two, three or four elements at
+ a time (where ``T`` is a tuple type).
+ - Add ``.tuple_windows::<T>()`` that iterates using a window of the
+ two, three or four most recent elements.
+ - Add ``.next_tuple::<T>()`` method, that picks the next two, three or four
+ elements in one go.
+ - ``.interleave()`` now has an accurate size hint.
+
+- 0.5.1
+
+ - Workaround module/function name clash that made racer crash on completing
+ itertools. Only internal changes needed.
+
+- 0.5.0
+
+ - `Release announcement <http://bluss.github.io/rust/2016/09/26/itertools-0.5.0/>`_
+ - Renamed:
+
+ - combinations is now tuple_combinations
+ - combinations_n to combinations
+ - group_by_lazy, chunks_lazy to group_by, chunks
+ - Unfold::new to unfold()
+ - RepeatCall::new to repeat_call()
+ - Zip::new to multizip
+ - PutBack::new, PutBackN::new to put_back, put_back_n
+ - PutBack::with_value is now a builder setter, not a constructor
+ - MultiPeek::new, .multipeek() to multipeek()
+ - format to format_with and format_default to format
+ - .into_rc() to rciter
+ - ``Partition`` enum is now ``Either``
+
+ - Module reorganization:
+
+ - All iterator structs are under ``itertools::structs`` but also
+ reexported to the top level, for backwards compatibility
+ - All free functions are reexported at the root, ``itertools::free`` will
+ be removed in the next version
+
+ - Removed:
+
+ - ZipSlices, use .zip() instead
+ - .enumerate_from(), ZipTrusted, due to being unstable
+ - .mend_slices(), moved to crate odds
+ - Stride, StrideMut, moved to crate odds
+ - linspace(), moved to crate itertools-num
+ - .sort_by(), use .sorted_by()
+ - .is_empty_hint(), use .size_hint()
+ - .dropn(), use .dropping()
+ - .map_fn(), use .map()
+ - .slice(), use .take() / .skip()
+ - helper traits in misc
+ - ``new`` constructors on iterator structs, use Itertools trait or free
+ functions instead
+ - ``itertools::size_hint`` is now private
+
+ - Behaviour changes:
+
+ - format and format_with helpers now panic if you try to format them more
+ than once.
+ - ``repeat_call`` is not double ended anymore
+
+ - New features:
+
+ - tuple flattening iterator is constructible with ``cons_tuples``
+ - itertools reexports ``Either`` from the ``either`` crate. ``Either<L, R>``
+ is an iterator when ``L, R`` are.
+ - ``MinMaxResult`` now implements Copy and Clone
+ - tuple_combinations supports 1-4 tuples of combinations (previously just 2)
+
+- 0.4.19
+
+ - Add ``.minmax_by()``
+ - Add ``itertools::free::cloned``
+ - Add ``itertools::free::rciter``
+ - Improve ``.step(n)`` slightly to take advantage of specialized Fuse better.
+
+- 0.4.18
+
+ - Only changes related to the "unstable" crate feature. This feature is more
+ or less deprecated.
+
+ - Use deprecated warnings when unstable is enabled. .enumerate_from() will
+ be removed imminently since it's using a deprecated libstd trait.
+
+- 0.4.17
+
+ - Fix bug in .kmerge() that caused it to often produce the wrong order (#134)
+
+- 0.4.16
+
+ - Improve precision of the interleave_shortest adaptor's size hint (it is
+ now computed exactly when possible).
+
+- 0.4.15
+
+ - Fixup on top of the workaround in 0.4.14. A function in itertools::free was
+ removed by mistake and now it is added back again.
+
+- 0.4.14
+
+ - Workaround an upstream regression in a rust nightly build that broke
+ compilation of of itertools::free::{interleave, merge}
+
+- 0.4.13
+
+ - Add .minmax() and .minmax_by_key(), iterator methods for finding both minimum
+ and maximum in one scan.
+ - Add .format_default(), a simpler version of .format() (lazy formatting
+ for iterators).
+
+- 0.4.12
+
+ - Add .zip_eq(), an adaptor like .zip() except it ensures iterators
+ of inequal length don't pass silently (instead it panics).
+ - Add .fold_while(), an iterator method that is a fold that
+ can short-circuit.
+ - Add .partition_map(), an iterator method that can separate elements
+ into two collections.
+
+- 0.4.11
+
+ - Add .get() for Stride{,Mut} and .get_mut() for StrideMut
+
+- 0.4.10
+
+ - Improve performance of .kmerge()
+
+- 0.4.9
+
+ - Add k-ary merge adaptor .kmerge()
+ - Fix a bug in .islice() with ranges a..b where a > b.
+
+- 0.4.8
+
+ - Implement Clone, Debug for Linspace
+
+- 0.4.7
+
+ - Add function diff_with() that compares two iterators
+ - Add .combinations_n(), an n-ary combinations iterator
+ - Add methods PutBack::with_value and PutBack::into_parts.
+
+- 0.4.6
+
+ - Add method .sorted()
+ - Add module ``itertools::free`` with free function variants of common
+ iterator adaptors and methods.
+ For example ``enumerate(iterable)``, ``rev(iterable)``, and so on.
+
+- 0.4.5
+
+ - Add .flatten()
+
+- 0.4.4
+
+ - Allow composing ZipSlices with itself
+
+- 0.4.3
+
+ - Write iproduct!() as a single expression; this allows temporary values
+ in its arguments.
+
+- 0.4.2
+
+ - Add .fold_options()
+ - Require Rust 1.1 or later
+
+- 0.4.1
+
+ - Update .dropping() to take advantage of .nth()
+
+- 0.4.0
+
+ - .merge(), .unique() and .dedup() now perform better due to not using
+ function pointers
+ - Add free functions enumerate() and rev()
+ - Breaking changes:
+
+ - Return types of .merge() and .merge_by() renamed and changed
+ - Method Merge::new removed
+ - .merge_by() now takes a closure that returns bool.
+ - Return type of .dedup() changed
+ - Return type of .mend_slices() changed
+ - Return type of .unique() changed
+ - Removed function times(), struct Times: use a range instead
+ - Removed deprecated macro icompr!()
+ - Removed deprecated FnMap and method .fn_map(): use .map_fn()
+ - .interleave_shortest() is no longer guaranteed to act like fused
+
+- 0.3.25
+
+ - Rename .sort_by() to .sorted_by(). Old name is deprecated.
+ - Fix well-formedness warnings from RFC 1214, no user visible impact
+
+- 0.3.24
+
+ - Improve performance of .merge()'s ordering function slightly
+
+- 0.3.23
+
+ - Added .chunks(), similar to (and based on) .group_by_lazy().
+ - Tweak linspace to match numpy.linspace and make it double ended.
+
+- 0.3.22
+
+ - Added ZipSlices, a fast zip for slices
+
+- 0.3.21
+
+ - Remove `Debug` impl for `Format`, it will have different use later
+
+- 0.3.20
+
+ - Optimize .group_by_lazy()
+
+- 0.3.19
+
+ - Added .group_by_lazy(), a possibly nonallocating group by
+ - Added .format(), a nonallocating formatting helper for iterators
+ - Remove uses of RandomAccessIterator since it has been deprecated in rust.
+
+- 0.3.17
+
+ - Added (adopted) Unfold from rust
+
+- 0.3.16
+
+ - Added adaptors .unique(), .unique_by()
+
+- 0.3.15
+
+ - Added method .sort_by()
+
+- 0.3.14
+
+ - Added adaptor .while_some()
+
+- 0.3.13
+
+ - Added adaptor .interleave_shortest()
+ - Added adaptor .pad_using()
+
+- 0.3.11
+
+ - Added assert_equal function
+
+- 0.3.10
+
+ - Bugfix .combinations() size_hint.
+
+- 0.3.8
+
+ - Added source RepeatCall
+
+- 0.3.7
+
+ - Added adaptor PutBackN
+ - Added adaptor .combinations()
+
+- 0.3.6
+
+ - Added itertools::partition, partition a sequence in place based on a predicate.
+ - Deprecate icompr!() with no replacement.
+
+- 0.3.5
+
+ - .map_fn() replaces deprecated .fn_map().
+
+- 0.3.4
+
+ - .take_while_ref() *by-ref adaptor*
+ - .coalesce() *adaptor*
+ - .mend_slices() *adaptor*
+
+- 0.3.3
+
+ - .dropping_back() *method*
+ - .fold1() *method*
+ - .is_empty_hint() *method*
+
+License
+-------
+
+Dual-licensed to be compatible with the Rust project.
+
+Licensed under the Apache License, Version 2.0
+http://www.apache.org/licenses/LICENSE-2.0 or the MIT license
+http://opensource.org/licenses/MIT, at your
+option. This file may not be copied, modified, or distributed
+except according to those terms.