mirror of
https://github.com/OMGeeky/google-apis-rs.git
synced 2026-02-23 15:49:49 +01:00
1726 lines
526 KiB
HTML
1726 lines
526 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Itertools` trait in crate `itertools`."><meta name="keywords" content="rust, rustlang, rust-lang, Itertools"><title>itertools::Itertools - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../ayu.css" disabled ><script id="default-settings"></script><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../favicon.svg">
|
||
<link rel="alternate icon" type="image/png" href="../favicon-16x16.png">
|
||
<link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc trait"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">☰</div><a href='../itertools/index.html'><div class='logo-container rust-logo'><img src='../rust-logo.png' alt='logo'></div></a><p class="location">Trait Itertools</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#provided-methods">Provided Methods</a><div class="sidebar-links"><a href="#method.concat">concat</a><a href="#method.format">format</a><a href="#method.combinations">combinations</a><a href="#method.combinations_with_replacement">combinations_with_replacement</a><a href="#method.intersperse">intersperse</a><a href="#method.peeking_take_while">peeking_take_while</a><a href="#method.permutations">permutations</a><a href="#method.powerset">powerset</a><a href="#method.tee">tee</a><a href="#method.with_position">with_position</a><a href="#method.zip_longest">zip_longest</a><a href="#method.kmerge_by">kmerge_by</a><a href="#method.minmax">minmax</a><a href="#method.k_smallest">k_smallest</a><a href="#method.cartesian_product">cartesian_product</a><a href="#method.interleave">interleave</a><a href="#method.interleave_shortest">interleave_shortest</a><a href="#method.intersperse_with">intersperse_with</a><a href="#method.zip_eq">zip_eq</a><a href="#method.batching">batching</a><a href="#method.group_by">group_by</a><a href="#method.chunks">chunks</a><a href="#method.tuple_windows">tuple_windows</a><a href="#method.circular_tuple_windows">circular_tuple_windows</a><a href="#method.tuples">tuples</a><a href="#method.step">step</a><a href="#method.map_into">map_into</a><a href="#method.map_results">map_results</a><a href="#method.map_ok">map_ok</a><a href="#method.filter_ok">filter_ok</a><a href="#method.filter_map_ok">filter_map_ok</a><a href="#method.merge">merge</a><a href="#method.merge_by">merge_by</a><a href="#method.merge_join_by">merge_join_by</a><a href="#method.kmerge">kmerge</a><a href="#method.multi_cartesian_product">multi_cartesian_product</a><a href="#method.coalesce">coalesce</a><a href="#method.dedup">dedup</a><a href="#method.dedup_by">dedup_by</a><a href="#method.dedup_with_count">dedup_with_count</a><a href="#method.dedup_by_with_count">dedup_by_with_count</a><a href="#method.unique">unique</a><a href="#method.unique_by">unique_by</a><a href="#method.take_while_ref">take_while_ref</a><a href="#method.while_some">while_some</a><a href="#method.tuple_combinations">tuple_combinations</a><a href="#method.pad_using">pad_using</a><a href="#method.positions">positions</a><a href="#method.update">update</a><a href="#method.next_tuple">next_tuple</a><a href="#method.collect_tuple">collect_tuple</a><a href="#method.find_position">find_position</a><a href="#method.all_equal">all_equal</a><a href="#method.dropping">dropping</a><a href="#method.dropping_back">dropping_back</a><a href="#method.foreach">foreach</a><a href="#method.collect_vec">collect_vec</a><a href="#method.try_collect">try_collect</a><a href="#method.set_from">set_from</a><a href="#method.join">join</a><a href="#method.format_with">format_with</a><a href="#method.fold_results">fold_results</a><a href="#method.fold_ok">fold_ok</a><a href="#method.fold_options">fold_options</a><a href="#method.fold1">fold1</a><a href="#method.tree_fold1">tree_fold1</a><a href="#method.fold_while">fold_while</a><a href="#method.sum1">sum1</a><a href="#method.product1">product1</a><a href="#method.sorted_unstable">sorted_unstable</a><a href="#method.sorted_unstable_by">sorted_unstable_by</a><a href="#method.sorted_unstable_by_key">sorted_unstable_by_key</a><a href="#method.sorted">sorted</a><a href="#method.sorted_by">sorted_by</a><a href="#method.sorted_by_key">sorted_by_key</a><a href="#method.partition_map">partition_map</a><a href="#method.into_group_map">into_group_map</a><a href="#method.into_group_map_by">into_group_map_by</a><a href="#method.into_grouping_map">into_grouping_map</a><a href="#method.into_grouping_map_by">into_grouping_map_by</a><a href="#method.minmax_by_key">minmax_by_key</a><a href="#method.minmax_by">minmax_by</a><a href="#method.position_max">position_max</a><a href="#method.position_max_by_key">position_max_by_key</a><a href="#method.position_max_by">position_max_by</a><a href="#method.position_min">position_min</a><a href="#method.position_min_by_key">position_min_by_key</a><a href="#method.position_min_by">position_min_by</a><a href="#method.position_minmax">position_minmax</a><a href="#method.position_minmax_by_key">position_minmax_by_key</a><a href="#method.position_minmax_by">position_minmax_by</a><a href="#method.exactly_one">exactly_one</a><a href="#method.multipeek">multipeek</a><a href="#method.counts">counts</a></div><a class="sidebar-title" href="#implementors">Implementors</a></div><p class="location"><a href="index.html">itertools</a></p><div id="sidebar-vars" data-name="Itertools" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"></div><button type="button" class="help-button">?</button>
|
||
<a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Trait <a href="index.html">itertools</a>::<wbr><a class="trait" href="">Itertools</a></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span><a class="srclink" href="../src/itertools/lib.rs.html#361-3061" title="goto source code">[src]</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class="rust trait">pub trait Itertools: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> {
|
||
fn <a href="#method.interleave" class="fnname">interleave</a><J>(self, other: J) -> <a class="struct" href="../itertools/structs/struct.Interleave.html" title="struct itertools::structs::Interleave">Interleave</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Interleave.html" title="struct itertools::structs::Interleave">Interleave</a><I, J></h3><code class="content"><span class="where fmt-newline">impl<I, J> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Interleave.html" title="struct itertools::structs::Interleave">Interleave</a><I, J> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span><br> <span class="where">where<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.interleave_shortest" class="fnname">interleave_shortest</a><J>(<br> self, <br> other: J<br> ) -> <a class="struct" href="../itertools/structs/struct.InterleaveShortest.html" title="struct itertools::structs::InterleaveShortest">InterleaveShortest</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.InterleaveShortest.html" title="struct itertools::structs::InterleaveShortest">InterleaveShortest</a><I, J></h3><code class="content"><span class="where fmt-newline">impl<I, J> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.InterleaveShortest.html" title="struct itertools::structs::InterleaveShortest">InterleaveShortest</a><I, J> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span><br> <span class="where">where<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.intersperse" class="fnname">intersperse</a>(self, element: Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="type" href="../itertools/structs/type.Intersperse.html" title="type itertools::structs::Intersperse">Intersperse</a><Self><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.intersperse_with" class="fnname">intersperse_with</a><F>(self, element: F) -> <a class="struct" href="../itertools/structs/struct.IntersperseWith.html" title="struct itertools::structs::IntersperseWith">IntersperseWith</a><Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.IntersperseWith.html" title="struct itertools::structs::IntersperseWith">IntersperseWith</a><I, ElemF></h3><code class="content"><span class="where fmt-newline">impl<I, ElemF> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.IntersperseWith.html" title="struct itertools::structs::IntersperseWith">IntersperseWith</a><I, ElemF> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> ElemF: IntersperseElement<I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>() -> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.zip_longest" class="fnname">zip_longest</a><J>(self, other: J) -> <a class="struct" href="../itertools/structs/struct.ZipLongest.html" title="struct itertools::structs::ZipLongest">ZipLongest</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.ZipLongest.html" title="struct itertools::structs::ZipLongest">ZipLongest</a><T, U></h3><code class="content"><span class="where fmt-newline">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.ZipLongest.html" title="struct itertools::structs::ZipLongest">ZipLongest</a><T, U> <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="enum" href="../itertools/enum.EitherOrBoth.html" title="enum itertools::EitherOrBoth">EitherOrBoth</a><T::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, U::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span><br> <span class="where">where<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.zip_eq" class="fnname">zip_eq</a><J>(self, other: J) -> <a class="struct" href="../itertools/structs/struct.ZipEq.html" title="struct itertools::structs::ZipEq">ZipEq</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.ZipEq.html" title="struct itertools::structs::ZipEq">ZipEq</a><I, J></h3><code class="content"><span class="where fmt-newline">impl<I, J> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.ZipEq.html" title="struct itertools::structs::ZipEq">ZipEq</a><I, J> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>;</span></code></span></div></span></span><br> <span class="where">where<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.batching" class="fnname">batching</a><B, F>(self, f: F) -> <a class="struct" href="../itertools/structs/struct.Batching.html" title="struct itertools::structs::Batching">Batching</a><Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Batching.html" title="struct itertools::structs::Batching">Batching</a><I, F></h3><code class="content"><span class="where fmt-newline">impl<B, F, I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Batching.html" title="struct itertools::structs::Batching">Batching</a><I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>I) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><B>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = B;</span></code></span></div></span></span><br> <span class="where">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><B>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.group_by" class="fnname">group_by</a><K, F>(self, key: F) -> <a class="struct" href="../itertools/structs/struct.GroupBy.html" title="struct itertools::structs::GroupBy">GroupBy</a><K, Self, F><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.chunks" class="fnname">chunks</a>(self, size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="../itertools/structs/struct.IntoChunks.html" title="struct itertools::structs::IntoChunks">IntoChunks</a><Self><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.tuple_windows" class="fnname">tuple_windows</a><T>(self) -> <a class="struct" href="../itertools/structs/struct.TupleWindows.html" title="struct itertools::structs::TupleWindows">TupleWindows</a><Self, T><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.TupleWindows.html" title="struct itertools::structs::TupleWindows">TupleWindows</a><I, T></h3><code class="content"><span class="where fmt-newline">impl<I, T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.TupleWindows.html" title="struct itertools::structs::TupleWindows">TupleWindows</a><I, T> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item>,<br> T: <a class="trait" href="../itertools/traits/trait.HomogeneousTuple.html" title="trait itertools::traits::HomogeneousTuple">HomogeneousTuple</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> T::Item: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = T;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item>,<br> T: <a class="trait" href="../itertools/traits/trait.HomogeneousTuple.html" title="trait itertools::traits::HomogeneousTuple">HomogeneousTuple</a>,<br> T::Item: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.circular_tuple_windows" class="fnname">circular_tuple_windows</a><T>(self) -> <a class="struct" href="../itertools/structs/struct.CircularTupleWindows.html" title="struct itertools::structs::CircularTupleWindows">CircularTupleWindows</a><Self, T><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.CircularTupleWindows.html" title="struct itertools::structs::CircularTupleWindows">CircularTupleWindows</a><I, T></h3><code class="content"><span class="where fmt-newline">impl<I, T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.CircularTupleWindows.html" title="struct itertools::structs::CircularTupleWindows">CircularTupleWindows</a><I, T> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> T: TupleCollect + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> T::Item: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = T;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html" title="trait core::iter::traits::exact_size::ExactSizeIterator">ExactSizeIterator</a>,<br> T: TupleCollect + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> T::Item: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.tuples" class="fnname">tuples</a><T>(self) -> <a class="struct" href="../itertools/structs/struct.Tuples.html" title="struct itertools::structs::Tuples">Tuples</a><Self, T><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Tuples.html" title="struct itertools::structs::Tuples">Tuples</a><I, T></h3><code class="content"><span class="where fmt-newline">impl<I, T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Tuples.html" title="struct itertools::structs::Tuples">Tuples</a><I, T> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item>,<br> T: <a class="trait" href="../itertools/traits/trait.HomogeneousTuple.html" title="trait itertools::traits::HomogeneousTuple">HomogeneousTuple</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = T;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item>,<br> T: <a class="trait" href="../itertools/traits/trait.HomogeneousTuple.html" title="trait itertools::traits::HomogeneousTuple">HomogeneousTuple</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.tee" class="fnname">tee</a>(self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="../itertools/structs/struct.Tee.html" title="struct itertools::structs::Tee">Tee</a><Self>, <a class="struct" href="../itertools/structs/struct.Tee.html" title="struct itertools::structs::Tee">Tee</a><Self><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.step" class="fnname">step</a>(self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="../itertools/structs/struct.Step.html" title="struct itertools::structs::Step">Step</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Step.html" title="struct itertools::structs::Step">Step</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Step.html" title="struct itertools::structs::Step">Step</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.map_into" class="fnname">map_into</a><R>(self) -> <a class="type" href="../itertools/structs/type.MapInto.html" title="type itertools::structs::MapInto">MapInto</a><Self, R><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><R></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.map_results" class="fnname">map_results</a><F, T, U, E>(self, f: F) -> <a class="type" href="../itertools/structs/type.MapOk.html" title="type itertools::structs::MapOk">MapOk</a><Self, F><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(T) -> U</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.map_ok" class="fnname">map_ok</a><F, T, U, E>(self, f: F) -> <a class="type" href="../itertools/structs/type.MapOk.html" title="type itertools::structs::MapOk">MapOk</a><Self, F><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(T) -> U</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.filter_ok" class="fnname">filter_ok</a><F, T, E>(self, f: F) -> <a class="struct" href="../itertools/structs/struct.FilterOk.html" title="struct itertools::structs::FilterOk">FilterOk</a><Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.FilterOk.html" title="struct itertools::structs::FilterOk">FilterOk</a><I, F></h3><code class="content"><span class="where fmt-newline">impl<I, F, T, E> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.FilterOk.html" title="struct itertools::structs::FilterOk">FilterOk</a><I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.filter_map_ok" class="fnname">filter_map_ok</a><F, T, U, E>(self, f: F) -> <a class="struct" href="../itertools/structs/struct.FilterMapOk.html" title="struct itertools::structs::FilterMapOk">FilterMapOk</a><Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.FilterMapOk.html" title="struct itertools::structs::FilterMapOk">FilterMapOk</a><I, F></h3><code class="content"><span class="where fmt-newline">impl<I, F, T, U, E> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.FilterMapOk.html" title="struct itertools::structs::FilterMapOk">FilterMapOk</a><I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(T) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><U>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, E>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(T) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><U></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.merge" class="fnname">merge</a><J>(self, other: J) -> <a class="type" href="../itertools/structs/type.Merge.html" title="type itertools::structs::Merge">Merge</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.merge_by" class="fnname">merge_by</a><J, F>(<br> self, <br> other: J, <br> is_first: F<br> ) -> <a class="struct" href="../itertools/structs/struct.MergeBy.html" title="struct itertools::structs::MergeBy">MergeBy</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.MergeBy.html" title="struct itertools::structs::MergeBy">MergeBy</a><I, J, F></h3><code class="content"><span class="where fmt-newline">impl<I, J, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.MergeBy.html" title="struct itertools::structs::MergeBy">MergeBy</a><I, J, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>,<br> F: MergePredicate<I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.merge_join_by" class="fnname">merge_join_by</a><J, F>(<br> self, <br> other: J, <br> cmp_fn: F<br> ) -> <a class="struct" href="../itertools/structs/struct.MergeJoinBy.html" title="struct itertools::structs::MergeJoinBy">MergeJoinBy</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.MergeJoinBy.html" title="struct itertools::structs::MergeJoinBy">MergeJoinBy</a><I, J, F></h3><code class="content"><span class="where fmt-newline">impl<I, J, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.MergeJoinBy.html" title="struct itertools::structs::MergeJoinBy">MergeJoinBy</a><I, J, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="enum" href="../itertools/enum.EitherOrBoth.html" title="enum itertools::EitherOrBoth">EitherOrBoth</a><I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span><br> <span class="where">where<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.kmerge" class="fnname">kmerge</a>(self) -> <a class="type" href="../itertools/structs/type.KMerge.html" title="type itertools::structs::KMerge">KMerge</a><<Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,<br> <Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.kmerge_by" class="fnname">kmerge_by</a><F>(<br> self, <br> first: F<br> ) -> <a class="struct" href="../itertools/structs/struct.KMergeBy.html" title="struct itertools::structs::KMergeBy">KMergeBy</a><<Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.KMergeBy.html" title="struct itertools::structs::KMergeBy">KMergeBy</a><I, F></h3><code class="content"><span class="where fmt-newline">impl<I, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.KMergeBy.html" title="struct itertools::structs::KMergeBy">KMergeBy</a><I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> F: KMergePredicate<I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&<Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>, &<Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.cartesian_product" class="fnname">cartesian_product</a><J>(self, other: J) -> <a class="struct" href="../itertools/structs/struct.Product.html" title="struct itertools::structs::Product">Product</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Product.html" title="struct itertools::structs::Product">Product</a><I, J></h3><code class="content"><span class="where fmt-newline">impl<I, J> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Product.html" title="struct itertools::structs::Product">Product</a><I, J> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,<br> J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.multi_cartesian_product" class="fnname">multi_cartesian_product</a>(<br> self<br> ) -> <a class="struct" href="../itertools/structs/struct.MultiProduct.html" title="struct itertools::structs::MultiProduct">MultiProduct</a><<Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.MultiProduct.html" title="struct itertools::structs::MultiProduct">MultiProduct</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.MultiProduct.html" title="struct itertools::structs::MultiProduct">MultiProduct</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,<br> <Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> <Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.coalesce" class="fnname">coalesce</a><F>(self, f: F) -> <a class="type" href="../itertools/structs/type.Coalesce.html" title="type itertools::structs::Coalesce">Coalesce</a><Self, F><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.dedup" class="fnname">dedup</a>(self) -> <a class="type" href="../itertools/structs/type.Dedup.html" title="type itertools::structs::Dedup">Dedup</a><Self><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.dedup_by" class="fnname">dedup_by</a><Cmp>(self, cmp: Cmp) -> <a class="type" href="../itertools/structs/type.DedupBy.html" title="type itertools::structs::DedupBy">DedupBy</a><Self, Cmp><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Cmp: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.dedup_with_count" class="fnname">dedup_with_count</a>(self) -> <a class="type" href="../itertools/structs/type.DedupWithCount.html" title="type itertools::structs::DedupWithCount">DedupWithCount</a><Self><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.dedup_by_with_count" class="fnname">dedup_by_with_count</a><Cmp>(self, cmp: Cmp) -> <a class="type" href="../itertools/structs/type.DedupByWithCount.html" title="type itertools::structs::DedupByWithCount">DedupByWithCount</a><Self, Cmp><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Cmp: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.unique" class="fnname">unique</a>(self) -> <a class="struct" href="../itertools/structs/struct.Unique.html" title="struct itertools::structs::Unique">Unique</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Unique.html" title="struct itertools::structs::Unique">Unique</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Unique.html" title="struct itertools::structs::Unique">Unique</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.unique_by" class="fnname">unique_by</a><V, F>(self, f: F) -> <a class="struct" href="../itertools/structs/struct.UniqueBy.html" title="struct itertools::structs::UniqueBy">UniqueBy</a><Self, V, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.UniqueBy.html" title="struct itertools::structs::UniqueBy">UniqueBy</a><I, V, F></h3><code class="content"><span class="where fmt-newline">impl<I, V, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.UniqueBy.html" title="struct itertools::structs::UniqueBy">UniqueBy</a><I, V, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> V: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> V, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> V: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> V</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.peeking_take_while" class="fnname">peeking_take_while</a><F>(<br> &mut self, <br> accept: F<br> ) -> <a class="struct" href="../itertools/structs/struct.PeekingTakeWhile.html" title="struct itertools::structs::PeekingTakeWhile">PeekingTakeWhile</a><'_, Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.PeekingTakeWhile.html" title="struct itertools::structs::PeekingTakeWhile">PeekingTakeWhile</a><'a, I, F></h3><code class="content"><span class="where fmt-newline">impl<'a, I, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.PeekingTakeWhile.html" title="struct itertools::structs::PeekingTakeWhile">PeekingTakeWhile</a><'a, I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="../itertools/trait.PeekingNext.html" title="trait itertools::PeekingNext">PeekingNext</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="../itertools/trait.PeekingNext.html" title="trait itertools::PeekingNext">PeekingNext</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.take_while_ref" class="fnname">take_while_ref</a><F>(&mut self, accept: F) -> <a class="struct" href="../itertools/structs/struct.TakeWhileRef.html" title="struct itertools::structs::TakeWhileRef">TakeWhileRef</a><'_, Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.TakeWhileRef.html" title="struct itertools::structs::TakeWhileRef">TakeWhileRef</a><'a, I, F></h3><code class="content"><span class="where fmt-newline">impl<'a, I, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.TakeWhileRef.html" title="struct itertools::structs::TakeWhileRef">TakeWhileRef</a><'a, I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.while_some" class="fnname">while_some</a><A>(self) -> <a class="struct" href="../itertools/structs/struct.WhileSome.html" title="struct itertools::structs::WhileSome">WhileSome</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.WhileSome.html" title="struct itertools::structs::WhileSome">WhileSome</a><I></h3><code class="content"><span class="where fmt-newline">impl<I, A> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.WhileSome.html" title="struct itertools::structs::WhileSome">WhileSome</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><A>>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = A;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><A>></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.tuple_combinations" class="fnname">tuple_combinations</a><T>(self) -> <a class="struct" href="../itertools/structs/struct.TupleCombinations.html" title="struct itertools::structs::TupleCombinations">TupleCombinations</a><Self, T><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.TupleCombinations.html" title="struct itertools::structs::TupleCombinations">TupleCombinations</a><I, T></h3><code class="content"><span class="where fmt-newline">impl<I, T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.TupleCombinations.html" title="struct itertools::structs::TupleCombinations">TupleCombinations</a><I, T> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> T: HasCombination<I>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = T;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> T: HasCombination<Self></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.combinations" class="fnname">combinations</a>(self, k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="../itertools/structs/struct.Combinations.html" title="struct itertools::structs::Combinations">Combinations</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Combinations.html" title="struct itertools::structs::Combinations">Combinations</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Combinations.html" title="struct itertools::structs::Combinations">Combinations</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.combinations_with_replacement" class="fnname">combinations_with_replacement</a>(<br> self, <br> k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br> ) -> <a class="struct" href="../itertools/structs/struct.CombinationsWithReplacement.html" title="struct itertools::structs::CombinationsWithReplacement">CombinationsWithReplacement</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.CombinationsWithReplacement.html" title="struct itertools::structs::CombinationsWithReplacement">CombinationsWithReplacement</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.CombinationsWithReplacement.html" title="struct itertools::structs::CombinationsWithReplacement">CombinationsWithReplacement</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.permutations" class="fnname">permutations</a>(self, k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="../itertools/structs/struct.Permutations.html" title="struct itertools::structs::Permutations">Permutations</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Permutations.html" title="struct itertools::structs::Permutations">Permutations</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Permutations.html" title="struct itertools::structs::Permutations">Permutations</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.powerset" class="fnname">powerset</a>(self) -> <a class="struct" href="../itertools/structs/struct.Powerset.html" title="struct itertools::structs::Powerset">Powerset</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Powerset.html" title="struct itertools::structs::Powerset">Powerset</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Powerset.html" title="struct itertools::structs::Powerset">Powerset</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.pad_using" class="fnname">pad_using</a><F>(self, min: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, f: F) -> <a class="struct" href="../itertools/structs/struct.PadUsing.html" title="struct itertools::structs::PadUsing">PadUsing</a><Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.PadUsing.html" title="struct itertools::structs::PadUsing">PadUsing</a><I, F></h3><code class="content"><span class="where fmt-newline">impl<I, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.PadUsing.html" title="struct itertools::structs::PadUsing">PadUsing</a><I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.with_position" class="fnname">with_position</a>(self) -> <a class="struct" href="../itertools/structs/struct.WithPosition.html" title="struct itertools::structs::WithPosition">WithPosition</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.WithPosition.html" title="struct itertools::structs::WithPosition">WithPosition</a><I></h3><code class="content"><span class="where fmt-newline">impl<I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.WithPosition.html" title="struct itertools::structs::WithPosition">WithPosition</a><I></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="enum" href="../itertools/enum.Position.html" title="enum itertools::Position">Position</a><I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.positions" class="fnname">positions</a><P>(self, predicate: P) -> <a class="struct" href="../itertools/structs/struct.Positions.html" title="struct itertools::structs::Positions">Positions</a><Self, P><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Positions.html" title="struct itertools::structs::Positions">Positions</a><I, F></h3><code class="content"><span class="where fmt-newline">impl<I, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Positions.html" title="struct itertools::structs::Positions">Positions</a><I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.update" class="fnname">update</a><F>(self, updater: F) -> <a class="struct" href="../itertools/structs/struct.Update.html" title="struct itertools::structs::Update">Update</a><Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Update.html" title="struct itertools::structs::Update">Update</a><I, F></h3><code class="content"><span class="where fmt-newline">impl<I, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Update.html" title="struct itertools::structs::Update">Update</a><I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&mut I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>), </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&mut Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>)</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.next_tuple" class="fnname">next_tuple</a><T>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><T><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item>,<br> T: <a class="trait" href="../itertools/traits/trait.HomogeneousTuple.html" title="trait itertools::traits::HomogeneousTuple">HomogeneousTuple</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.collect_tuple" class="fnname">collect_tuple</a><T>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><T><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item>,<br> T: <a class="trait" href="../itertools/traits/trait.HomogeneousTuple.html" title="trait itertools::traits::HomogeneousTuple">HomogeneousTuple</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.find_position" class="fnname">find_position</a><P>(&mut self, pred: P) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>><br> <span class="where">where<br> P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.all_equal" class="fnname">all_equal</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.dropping" class="fnname">dropping</a>(self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self<br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.dropping_back" class="fnname">dropping_back</a>(self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self<br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/double_ended/trait.DoubleEndedIterator.html" title="trait core::iter::traits::double_ended::DoubleEndedIterator">DoubleEndedIterator</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.foreach" class="fnname">foreach</a><F>(self, f: F)<br> <span class="where">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>),<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.concat" class="fnname">concat</a>(self) -> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a><<Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.collect_vec" class="fnname">collect_vec</a>(self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.try_collect" class="fnname">try_collect</a><T, U, E>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, E><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>>,<br> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, E>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html" title="trait core::iter::traits::collect::FromIterator">FromIterator</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.set_from" class="fnname">set_from</a><'a, A: 'a, J>(&mut self, from: J) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>A>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = A></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.join" class="fnname">join</a>(&mut self, sep: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a><br> <span class="where">where<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.format" class="fnname">format</a>(self, sep: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="../itertools/structs/struct.Format.html" title="struct itertools::structs::Format">Format</a><'_, Self><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.format_with" class="fnname">format_with</a><F>(self, sep: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, format: F) -> <a class="struct" href="../itertools/structs/struct.FormatWith.html" title="struct itertools::structs::FormatWith">FormatWith</a><'_, Self, F><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &mut dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.fold_results" class="fnname">fold_results</a><A, E, B, F>(&mut self, start: B, f: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><B, E><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><A, E>>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, A) -> B</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.fold_ok" class="fnname">fold_ok</a><A, E, B, F>(&mut self, start: B, f: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><B, E><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><A, E>>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, A) -> B</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.fold_options" class="fnname">fold_options</a><A, B, F>(&mut self, start: B, f: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><B><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><A>>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, A) -> B</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.fold1" class="fnname">fold1</a><F>(self, f: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>><br> <span class="where">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.tree_fold1" class="fnname">tree_fold1</a><F>(self, f: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>><br> <span class="where">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.fold_while" class="fnname">fold_while</a><B, F>(&mut self, init: B, f: F) -> <a class="enum" href="../itertools/enum.FoldWhile.html" title="enum itertools::FoldWhile">FoldWhile</a><B><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="../itertools/enum.FoldWhile.html" title="enum itertools::FoldWhile">FoldWhile</a><B></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.sum1" class="fnname">sum1</a><S>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><S><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html" title="trait core::iter::traits::accum::Sum">Sum</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.product1" class="fnname">product1</a><P>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><P><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html" title="trait core::iter::traits::accum::Product">Product</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.sorted_unstable" class="fnname">sorted_unstable</a>(self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html" title="struct alloc::vec::into_iter::IntoIter">IntoIter</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.sorted_unstable_by" class="fnname">sorted_unstable_by</a><F>(self, cmp: F) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html" title="struct alloc::vec::into_iter::IntoIter">IntoIter</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.sorted_unstable_by_key" class="fnname">sorted_unstable_by_key</a><K, F>(self, f: F) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html" title="struct alloc::vec::into_iter::IntoIter">IntoIter</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.sorted" class="fnname">sorted</a>(self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html" title="struct alloc::vec::into_iter::IntoIter">IntoIter</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.sorted_by" class="fnname">sorted_by</a><F>(self, cmp: F) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html" title="struct alloc::vec::into_iter::IntoIter">IntoIter</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.sorted_by_key" class="fnname">sorted_by_key</a><K, F>(self, f: F) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html" title="struct alloc::vec::into_iter::IntoIter">IntoIter</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.k_smallest" class="fnname">k_smallest</a>(self, k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html" title="struct alloc::vec::into_iter::IntoIter">IntoIter</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.partition_map" class="fnname">partition_map</a><A, B, F, L, R>(self, predicate: F) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>A, B<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="../itertools/enum.Either.html" title="enum itertools::Either">Either</a><L, R>,<br> A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a><L>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a><R></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.into_group_map" class="fnname">into_group_map</a><K, V>(self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><K, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><V>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>K, V<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.into_group_map_by" class="fnname">into_group_map_by</a><K, V, F>(self, f: F) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><K, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><V>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = V> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>V) -> K</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.into_grouping_map" class="fnname">into_grouping_map</a><K, V>(self) -> <a class="struct" href="../itertools/structs/struct.GroupingMap.html" title="struct itertools::structs::GroupingMap">GroupingMap</a><Self><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>K, V<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.into_grouping_map_by" class="fnname">into_grouping_map_by</a><K, V, F>(<br> self, <br> key_mapper: F<br> ) -> <a class="type" href="../itertools/structs/type.GroupingMapBy.html" title="type itertools::structs::GroupingMapBy">GroupingMapBy</a><Self, F><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = V> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>V) -> K</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.minmax" class="fnname">minmax</a>(self) -> <a class="enum" href="../itertools/enum.MinMaxResult.html" title="enum itertools::MinMaxResult">MinMaxResult</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.minmax_by_key" class="fnname">minmax_by_key</a><K, F>(self, key: F) -> <a class="enum" href="../itertools/enum.MinMaxResult.html" title="enum itertools::MinMaxResult">MinMaxResult</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.minmax_by" class="fnname">minmax_by</a><F>(self, compare: F) -> <a class="enum" href="../itertools/enum.MinMaxResult.html" title="enum itertools::MinMaxResult">MinMaxResult</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.position_max" class="fnname">position_max</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.position_max_by_key" class="fnname">position_max_by_key</a><K, F>(self, key: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.position_max_by" class="fnname">position_max_by</a><F>(self, compare: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.position_min" class="fnname">position_min</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.position_min_by_key" class="fnname">position_min_by_key</a><K, F>(self, key: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.position_min_by" class="fnname">position_min_by</a><F>(self, compare: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.position_minmax" class="fnname">position_minmax</a>(self) -> <a class="enum" href="../itertools/enum.MinMaxResult.html" title="enum itertools::MinMaxResult">MinMaxResult</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.position_minmax_by_key" class="fnname">position_minmax_by_key</a><K, F>(self, key: F) -> <a class="enum" href="../itertools/enum.MinMaxResult.html" title="enum itertools::MinMaxResult">MinMaxResult</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K</span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.position_minmax_by" class="fnname">position_minmax_by</a><F>(self, compare: F) -> <a class="enum" href="../itertools/enum.MinMaxResult.html" title="enum itertools::MinMaxResult">MinMaxResult</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.exactly_one" class="fnname">exactly_one</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, <a class="struct" href="../itertools/structs/struct.ExactlyOneError.html" title="struct itertools::structs::ExactlyOneError">ExactlyOneError</a><Self>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.multipeek" class="fnname">multipeek</a>(self) -> <a class="struct" href="../itertools/structs/struct.MultiPeek.html" title="struct itertools::structs::MultiPeek">MultiPeek</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.MultiPeek.html" title="struct itertools::structs::MultiPeek">MultiPeek</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.MultiPeek.html" title="struct itertools::structs::MultiPeek">MultiPeek</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
|
||
{ ... }
|
||
<div class="item-spacer"></div> fn <a href="#method.counts" class="fnname">counts</a>(self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>><br> <span class="where">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a></span>,
|
||
{ ... }
|
||
}</pre></div><div class="docblock"><p>An <a href="https://doc.rust-lang.org/std/iter/trait.Iterator.html"><code>Iterator</code></a> blanket implementation that provides extra adaptors and
|
||
methods.</p>
|
||
<p>This trait defines a number of methods. They are divided into two groups:</p>
|
||
<ul>
|
||
<li>
|
||
<p><em>Adaptors</em> take an iterator and parameter as input, and return
|
||
a new iterator value. These are listed first in the trait. An example
|
||
of an adaptor is <a href="#method.interleave"><code>.interleave()</code></a></p>
|
||
</li>
|
||
<li>
|
||
<p><em>Regular methods</em> are those that don't return iterators and instead
|
||
return a regular value of some other kind.
|
||
<a href="#method.next_tuple"><code>.next_tuple()</code></a> is an example and the first regular
|
||
method in the list.</p>
|
||
</li>
|
||
</ul>
|
||
</div><h2 id="provided-methods" class="small-section-header">Provided methods<a href="#provided-methods" class="anchor"></a></h2><div class="methods"><h3 id="method.interleave" class="method"><code>fn <a href="#method.interleave" class="fnname">interleave</a><J>(self, other: J) -> <a class="struct" href="../itertools/structs/struct.Interleave.html" title="struct itertools::structs::Interleave">Interleave</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Interleave.html" title="struct itertools::structs::Interleave">Interleave</a><I, J></h3><code class="content"><span class="where fmt-newline">impl<I, J> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Interleave.html" title="struct itertools::structs::Interleave">Interleave</a><I, J> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#376-381" title="goto source code">[src]</a></h3><div class="docblock"><p>Alternate elements from two iterators until both have run out.</p>
|
||
<p>Iterator element type is <code>Self::Item</code>.</p>
|
||
<p>This iterator is <em>fused</em>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">7</span>).<span class="ident">interleave</span>(<span class="macro">vec</span><span class="macro">!</span>[<span class="op">-</span><span class="number">1</span>, <span class="op">-</span><span class="number">2</span>]);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="op">-</span><span class="number">1</span>, <span class="number">2</span>, <span class="op">-</span><span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);</pre></div>
|
||
</div><h3 id="method.interleave_shortest" class="method"><code>fn <a href="#method.interleave_shortest" class="fnname">interleave_shortest</a><J>(<br> self, <br> other: J<br>) -> <a class="struct" href="../itertools/structs/struct.InterleaveShortest.html" title="struct itertools::structs::InterleaveShortest">InterleaveShortest</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.InterleaveShortest.html" title="struct itertools::structs::InterleaveShortest">InterleaveShortest</a><I, J></h3><code class="content"><span class="where fmt-newline">impl<I, J> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.InterleaveShortest.html" title="struct itertools::structs::InterleaveShortest">InterleaveShortest</a><I, J> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#394-399" title="goto source code">[src]</a></h3><div class="docblock"><p>Alternate elements from two iterators until at least one of them has run
|
||
out.</p>
|
||
<p>Iterator element type is <code>Self::Item</code>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">7</span>).<span class="ident">interleave_shortest</span>(<span class="macro">vec</span><span class="macro">!</span>[<span class="op">-</span><span class="number">1</span>, <span class="op">-</span><span class="number">2</span>]);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="op">-</span><span class="number">1</span>, <span class="number">2</span>, <span class="op">-</span><span class="number">2</span>, <span class="number">3</span>]);</pre></div>
|
||
</div><h3 id="method.intersperse" class="method"><code>fn <a href="#method.intersperse" class="fnname">intersperse</a>(self, element: Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="type" href="../itertools/structs/type.Intersperse.html" title="type itertools::structs::Intersperse">Intersperse</a><Self> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#413-418" title="goto source code">[src]</a></h3><div class="docblock"><p>An iterator adaptor to insert a particular value
|
||
between each element of the adapted iterator.</p>
|
||
<p>Iterator element type is <code>Self::Item</code>.</p>
|
||
<p>This iterator is <em>fused</em>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>((<span class="number">0</span>..<span class="number">3</span>).<span class="ident">intersperse</span>(<span class="number">8</span>), <span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>, <span class="number">8</span>, <span class="number">1</span>, <span class="number">8</span>, <span class="number">2</span>]);</pre></div>
|
||
</div><h3 id="method.intersperse_with" class="method"><code>fn <a href="#method.intersperse_with" class="fnname">intersperse_with</a><F>(self, element: F) -> <a class="struct" href="../itertools/structs/struct.IntersperseWith.html" title="struct itertools::structs::IntersperseWith">IntersperseWith</a><Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.IntersperseWith.html" title="struct itertools::structs::IntersperseWith">IntersperseWith</a><I, ElemF></h3><code class="content"><span class="where fmt-newline">impl<I, ElemF> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.IntersperseWith.html" title="struct itertools::structs::IntersperseWith">IntersperseWith</a><I, ElemF> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> ElemF: IntersperseElement<I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>() -> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#434-439" title="goto source code">[src]</a></h3><div class="docblock"><p>An iterator adaptor to insert a particular value created by a function
|
||
between each element of the adapted iterator.</p>
|
||
<p>Iterator element type is <code>Self::Item</code>.</p>
|
||
<p>This iterator is <em>fused</em>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">i</span> <span class="op">=</span> <span class="number">10</span>;
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>((<span class="number">0</span>..<span class="number">3</span>).<span class="ident">intersperse_with</span>(<span class="op">|</span><span class="op">|</span> { <span class="ident">i</span> <span class="op">-</span><span class="op">=</span> <span class="number">1</span>; <span class="ident">i</span> }), <span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>, <span class="number">9</span>, <span class="number">1</span>, <span class="number">8</span>, <span class="number">2</span>]);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">i</span>, <span class="number">8</span>);</pre></div>
|
||
</div><h3 id="method.zip_longest" class="method"><code>fn <a href="#method.zip_longest" class="fnname">zip_longest</a><J>(self, other: J) -> <a class="struct" href="../itertools/structs/struct.ZipLongest.html" title="struct itertools::structs::ZipLongest">ZipLongest</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.ZipLongest.html" title="struct itertools::structs::ZipLongest">ZipLongest</a><T, U></h3><code class="content"><span class="where fmt-newline">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.ZipLongest.html" title="struct itertools::structs::ZipLongest">ZipLongest</a><T, U> <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="enum" href="../itertools/enum.EitherOrBoth.html" title="enum itertools::EitherOrBoth">EitherOrBoth</a><T::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, U::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#468-473" title="goto source code">[src]</a></h3><div class="docblock"><p>Create an iterator which iterates over both this and the specified
|
||
iterator simultaneously, yielding pairs of two optional elements.</p>
|
||
<p>This iterator is <em>fused</em>.</p>
|
||
<p>As long as neither input iterator is exhausted yet, it yields two values
|
||
via <code>EitherOrBoth::Both</code>.</p>
|
||
<p>When the parameter iterator is exhausted, it only yields a value from the
|
||
<code>self</code> iterator via <code>EitherOrBoth::Left</code>.</p>
|
||
<p>When the <code>self</code> iterator is exhausted, it only yields a value from the
|
||
parameter iterator via <code>EitherOrBoth::Right</code>.</p>
|
||
<p>When both iterators return <code>None</code>, all further invocations of <code>.next()</code>
|
||
will return <code>None</code>.</p>
|
||
<p>Iterator element type is
|
||
<a href="enum.EitherOrBoth.html"><code>EitherOrBoth<Self::Item, J::Item></code></a>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">EitherOrBoth</span>::{<span class="ident">Both</span>, <span class="ident">Right</span>};
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">1</span>).<span class="ident">zip_longest</span>(<span class="number">1</span>..<span class="number">3</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="ident">Both</span>(<span class="number">0</span>, <span class="number">1</span>), <span class="ident">Right</span>(<span class="number">2</span>)]);</pre></div>
|
||
</div><h3 id="method.zip_eq" class="method"><code>fn <a href="#method.zip_eq" class="fnname">zip_eq</a><J>(self, other: J) -> <a class="struct" href="../itertools/structs/struct.ZipEq.html" title="struct itertools::structs::ZipEq">ZipEq</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.ZipEq.html" title="struct itertools::structs::ZipEq">ZipEq</a><I, J></h3><code class="content"><span class="where fmt-newline">impl<I, J> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.ZipEq.html" title="struct itertools::structs::ZipEq">ZipEq</a><I, J> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#481-486" title="goto source code">[src]</a></h3><div class="docblock"><p>Create an iterator which iterates over both this and the specified
|
||
iterator simultaneously, yielding pairs of elements.</p>
|
||
<p><strong>Panics</strong> if the iterators reach an end and they are not of equal
|
||
lengths.</p>
|
||
</div><h3 id="method.batching" class="method"><code>fn <a href="#method.batching" class="fnname">batching</a><B, F>(self, f: F) -> <a class="struct" href="../itertools/structs/struct.Batching.html" title="struct itertools::structs::Batching">Batching</a><Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Batching.html" title="struct itertools::structs::Batching">Batching</a><I, F></h3><code class="content"><span class="where fmt-newline">impl<B, F, I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Batching.html" title="struct itertools::structs::Batching">Batching</a><I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>I) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><B>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = B;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>Self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><B>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#511-516" title="goto source code">[src]</a></h3><div class="docblock"><p>A “meta iterator adaptor”. Its closure receives a reference to the
|
||
iterator and may pick off as many elements as it likes, to produce the
|
||
next iterator element.</p>
|
||
<p>Iterator element type is <code>B</code>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="comment">// An adaptor that gathers elements in pairs</span>
|
||
<span class="kw">let</span> <span class="ident">pit</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">4</span>).<span class="ident">batching</span>(<span class="op">|</span><span class="ident">it</span><span class="op">|</span> {
|
||
<span class="kw">match</span> <span class="ident">it</span>.<span class="ident">next</span>() {
|
||
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">None</span>,
|
||
<span class="prelude-val">Some</span>(<span class="ident">x</span>) <span class="op">=</span><span class="op">></span> <span class="kw">match</span> <span class="ident">it</span>.<span class="ident">next</span>() {
|
||
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">None</span>,
|
||
<span class="prelude-val">Some</span>(<span class="ident">y</span>) <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>((<span class="ident">x</span>, <span class="ident">y</span>)),
|
||
}
|
||
}
|
||
});
|
||
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">pit</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">0</span>, <span class="number">1</span>), (<span class="number">2</span>, <span class="number">3</span>)]);</pre></div>
|
||
</div><h3 id="method.group_by" class="method"><code>fn <a href="#method.group_by" class="fnname">group_by</a><K, F>(self, key: F) -> <a class="struct" href="../itertools/structs/struct.GroupBy.html" title="struct itertools::structs::GroupBy">GroupBy</a><K, Self, F> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#553-559" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an <em>iterable</em> that can group iterator elements.
|
||
Consecutive elements that map to the same key (“runs”), are assigned
|
||
to the same group.</p>
|
||
<p><code>GroupBy</code> is the storage for the lazy grouping operation.</p>
|
||
<p>If the groups are consumed in order, or if each group's iterator is
|
||
dropped without keeping it around, then <code>GroupBy</code> uses no
|
||
allocations. It needs allocations only if several group iterators
|
||
are alive at the same time.</p>
|
||
<p>This type implements <code>IntoIterator</code> (it is <strong>not</strong> an iterator
|
||
itself), because the group iterators need to borrow from this
|
||
value. It should be stored in a local variable or temporary and
|
||
iterated.</p>
|
||
<p>Iterator element type is <code>(K, Group)</code>: the group's key and the
|
||
group iterator.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="comment">// group data into runs of larger than zero or not.</span>
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">3</span>, <span class="op">-</span><span class="number">2</span>, <span class="op">-</span><span class="number">2</span>, <span class="number">1</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
|
||
<span class="comment">// groups: |---->|------>|--------->|</span>
|
||
|
||
<span class="comment">// Note: The `&` is significant here, `GroupBy` is iterable</span>
|
||
<span class="comment">// only by reference. You can also call `.into_iter()` explicitly.</span>
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">data_grouped</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">new</span>();
|
||
<span class="kw">for</span> (<span class="ident">key</span>, <span class="ident">group</span>) <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">into_iter</span>().<span class="ident">group_by</span>(<span class="op">|</span><span class="ident">elt</span><span class="op">|</span> <span class="kw-2">*</span><span class="ident">elt</span> <span class="op">></span><span class="op">=</span> <span class="number">0</span>) {
|
||
<span class="ident">data_grouped</span>.<span class="ident">push</span>((<span class="ident">key</span>, <span class="ident">group</span>.<span class="ident">collect</span>()));
|
||
}
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">data_grouped</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="bool-val">true</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">3</span>]), (<span class="bool-val">false</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="op">-</span><span class="number">2</span>, <span class="op">-</span><span class="number">2</span>]), (<span class="bool-val">true</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>])]);</pre></div>
|
||
</div><h3 id="method.chunks" class="method"><code>fn <a href="#method.chunks" class="fnname">chunks</a>(self, size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="../itertools/structs/struct.IntoChunks.html" title="struct itertools::structs::IntoChunks">IntoChunks</a><Self> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#589-594" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an <em>iterable</em> that can chunk the iterator.</p>
|
||
<p>Yield subiterators (chunks) that each yield a fixed number elements,
|
||
determined by <code>size</code>. The last chunk will be shorter if there aren't
|
||
enough elements.</p>
|
||
<p><code>IntoChunks</code> is based on <code>GroupBy</code>: it is iterable (implements
|
||
<code>IntoIterator</code>, <strong>not</strong> <code>Iterator</code>), and it only buffers if several
|
||
chunk iterators are alive at the same time.</p>
|
||
<p>Iterator element type is <code>Chunk</code>, each chunk's iterator.</p>
|
||
<p><strong>Panics</strong> if <code>size</code> is 0.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="op">-</span><span class="number">2</span>, <span class="number">6</span>, <span class="number">0</span>, <span class="number">3</span>, <span class="number">1</span>];
|
||
<span class="comment">//chunk size=3 |------->|-------->|--->|</span>
|
||
|
||
<span class="comment">// Note: The `&` is significant here, `IntoChunks` is iterable</span>
|
||
<span class="comment">// only by reference. You can also call `.into_iter()` explicitly.</span>
|
||
<span class="kw">for</span> <span class="ident">chunk</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">into_iter</span>().<span class="ident">chunks</span>(<span class="number">3</span>) {
|
||
<span class="comment">// Check that the sum of each chunk is 4.</span>
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="number">4</span>, <span class="ident">chunk</span>.<span class="ident">sum</span>());
|
||
}</pre></div>
|
||
</div><h3 id="method.tuple_windows" class="method"><code>fn <a href="#method.tuple_windows" class="fnname">tuple_windows</a><T>(self) -> <a class="struct" href="../itertools/structs/struct.TupleWindows.html" title="struct itertools::structs::TupleWindows">TupleWindows</a><Self, T><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.TupleWindows.html" title="struct itertools::structs::TupleWindows">TupleWindows</a><I, T></h3><code class="content"><span class="where fmt-newline">impl<I, T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.TupleWindows.html" title="struct itertools::structs::TupleWindows">TupleWindows</a><I, T> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item>,<br> T: <a class="trait" href="../itertools/traits/trait.HomogeneousTuple.html" title="trait itertools::traits::HomogeneousTuple">HomogeneousTuple</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> T::Item: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = T;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item>,<br> T: <a class="trait" href="../itertools/traits/trait.HomogeneousTuple.html" title="trait itertools::traits::HomogeneousTuple">HomogeneousTuple</a>,<br> T::Item: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#629-635" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator over all contiguous windows producing tuples of
|
||
a specific size (up to 4).</p>
|
||
<p><code>tuple_windows</code> clones the iterator elements so that they can be
|
||
part of successive windows, this makes it most suited for iterators
|
||
of references and other values that are cheap to copy.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">v</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">new</span>();
|
||
|
||
<span class="comment">// pairwise iteration</span>
|
||
<span class="kw">for</span> (<span class="ident">a</span>, <span class="ident">b</span>) <span class="kw">in</span> (<span class="number">1</span>..<span class="number">5</span>).<span class="ident">tuple_windows</span>() {
|
||
<span class="ident">v</span>.<span class="ident">push</span>((<span class="ident">a</span>, <span class="ident">b</span>));
|
||
}
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">v</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">1</span>, <span class="number">2</span>), (<span class="number">2</span>, <span class="number">3</span>), (<span class="number">3</span>, <span class="number">4</span>)]);
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">5</span>).<span class="ident">tuple_windows</span>();
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">Some</span>((<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>)), <span class="ident">it</span>.<span class="ident">next</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">Some</span>((<span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>)), <span class="ident">it</span>.<span class="ident">next</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">None</span>, <span class="ident">it</span>.<span class="ident">next</span>());
|
||
|
||
<span class="comment">// this requires a type hint</span>
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">5</span>).<span class="ident">tuple_windows</span>::<span class="op"><</span>(<span class="kw">_</span>, <span class="kw">_</span>, <span class="kw">_</span>)<span class="op">></span>();
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>), (<span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>)]);
|
||
|
||
<span class="comment">// you can also specify the complete type</span>
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">TupleWindows</span>;
|
||
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">ops</span>::<span class="ident">Range</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span>: <span class="ident">TupleWindows</span><span class="op"><</span><span class="ident">Range</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, (<span class="ident">u32</span>, <span class="ident">u32</span>, <span class="ident">u32</span>)<span class="op">></span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">5</span>).<span class="ident">tuple_windows</span>();
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>), (<span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>)]);</pre></div>
|
||
</div><h3 id="method.circular_tuple_windows" class="method"><code>fn <a href="#method.circular_tuple_windows" class="fnname">circular_tuple_windows</a><T>(self) -> <a class="struct" href="../itertools/structs/struct.CircularTupleWindows.html" title="struct itertools::structs::CircularTupleWindows">CircularTupleWindows</a><Self, T><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.CircularTupleWindows.html" title="struct itertools::structs::CircularTupleWindows">CircularTupleWindows</a><I, T></h3><code class="content"><span class="where fmt-newline">impl<I, T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.CircularTupleWindows.html" title="struct itertools::structs::CircularTupleWindows">CircularTupleWindows</a><I, T> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> T: TupleCollect + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> T::Item: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = T;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html" title="trait core::iter::traits::exact_size::ExactSizeIterator">ExactSizeIterator</a>,<br> T: TupleCollect + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> T::Item: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#664-670" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator over all windows, wrapping back to the first
|
||
elements when the window would otherwise exceed the length of the
|
||
iterator, producing tuples of a specific size (up to 4).</p>
|
||
<p><code>circular_tuple_windows</code> clones the iterator elements so that they can be
|
||
part of successive windows, this makes it most suited for iterators
|
||
of references and other values that are cheap to copy.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">v</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">new</span>();
|
||
<span class="kw">for</span> (<span class="ident">a</span>, <span class="ident">b</span>) <span class="kw">in</span> (<span class="number">1</span>..<span class="number">5</span>).<span class="ident">circular_tuple_windows</span>() {
|
||
<span class="ident">v</span>.<span class="ident">push</span>((<span class="ident">a</span>, <span class="ident">b</span>));
|
||
}
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">v</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">1</span>, <span class="number">2</span>), (<span class="number">2</span>, <span class="number">3</span>), (<span class="number">3</span>, <span class="number">4</span>), (<span class="number">4</span>, <span class="number">1</span>)]);
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">5</span>).<span class="ident">circular_tuple_windows</span>();
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">Some</span>((<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>)), <span class="ident">it</span>.<span class="ident">next</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">Some</span>((<span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>)), <span class="ident">it</span>.<span class="ident">next</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">Some</span>((<span class="number">3</span>, <span class="number">4</span>, <span class="number">1</span>)), <span class="ident">it</span>.<span class="ident">next</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">Some</span>((<span class="number">4</span>, <span class="number">1</span>, <span class="number">2</span>)), <span class="ident">it</span>.<span class="ident">next</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">None</span>, <span class="ident">it</span>.<span class="ident">next</span>());
|
||
|
||
<span class="comment">// this requires a type hint</span>
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">5</span>).<span class="ident">circular_tuple_windows</span>::<span class="op"><</span>(<span class="kw">_</span>, <span class="kw">_</span>, <span class="kw">_</span>)<span class="op">></span>();
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>), (<span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>), (<span class="number">3</span>, <span class="number">4</span>, <span class="number">1</span>), (<span class="number">4</span>, <span class="number">1</span>, <span class="number">2</span>)]);</pre></div>
|
||
</div><h3 id="method.tuples" class="method"><code>fn <a href="#method.tuples" class="fnname">tuples</a><T>(self) -> <a class="struct" href="../itertools/structs/struct.Tuples.html" title="struct itertools::structs::Tuples">Tuples</a><Self, T><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Tuples.html" title="struct itertools::structs::Tuples">Tuples</a><I, T></h3><code class="content"><span class="where fmt-newline">impl<I, T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Tuples.html" title="struct itertools::structs::Tuples">Tuples</a><I, T> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item>,<br> T: <a class="trait" href="../itertools/traits/trait.HomogeneousTuple.html" title="trait itertools::traits::HomogeneousTuple">HomogeneousTuple</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = T;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item>,<br> T: <a class="trait" href="../itertools/traits/trait.HomogeneousTuple.html" title="trait itertools::traits::HomogeneousTuple">HomogeneousTuple</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#702-707" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator that groups the items in tuples of a specific size
|
||
(up to 4).</p>
|
||
<p>See also the method <a href="#method.next_tuple"><code>.next_tuple()</code></a>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">v</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">new</span>();
|
||
<span class="kw">for</span> (<span class="ident">a</span>, <span class="ident">b</span>) <span class="kw">in</span> (<span class="number">1</span>..<span class="number">5</span>).<span class="ident">tuples</span>() {
|
||
<span class="ident">v</span>.<span class="ident">push</span>((<span class="ident">a</span>, <span class="ident">b</span>));
|
||
}
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">v</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">1</span>, <span class="number">2</span>), (<span class="number">3</span>, <span class="number">4</span>)]);
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">7</span>).<span class="ident">tuples</span>();
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">Some</span>((<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>)), <span class="ident">it</span>.<span class="ident">next</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">Some</span>((<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>)), <span class="ident">it</span>.<span class="ident">next</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">None</span>, <span class="ident">it</span>.<span class="ident">next</span>());
|
||
|
||
<span class="comment">// this requires a type hint</span>
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">7</span>).<span class="ident">tuples</span>::<span class="op"><</span>(<span class="kw">_</span>, <span class="kw">_</span>, <span class="kw">_</span>)<span class="op">></span>();
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>), (<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>)]);
|
||
|
||
<span class="comment">// you can also specify the complete type</span>
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Tuples</span>;
|
||
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">ops</span>::<span class="ident">Range</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span>: <span class="ident">Tuples</span><span class="op"><</span><span class="ident">Range</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, (<span class="ident">u32</span>, <span class="ident">u32</span>, <span class="ident">u32</span>)<span class="op">></span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">7</span>).<span class="ident">tuples</span>();
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>), (<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>)]);</pre></div>
|
||
<p>See also <a href="structs/struct.Tuples.html#method.into_buffer"><code>Tuples::into_buffer</code></a>.</p>
|
||
</div><h3 id="method.tee" class="method"><code>fn <a href="#method.tee" class="fnname">tee</a>(self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="../itertools/structs/struct.Tee.html" title="struct itertools::structs::Tee">Tee</a><Self>, <a class="struct" href="../itertools/structs/struct.Tee.html" title="struct itertools::structs::Tee">Tee</a><Self><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#727-732" title="goto source code">[src]</a></h3><div class="docblock"><p>Split into an iterator pair that both yield all elements from
|
||
the original iterator.</p>
|
||
<p><strong>Note:</strong> If the iterator is clonable, prefer using that instead
|
||
of using this method. It is likely to be more efficient.</p>
|
||
<p>Iterator element type is <code>Self::Item</code>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
<span class="kw">let</span> <span class="ident">xs</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>];
|
||
|
||
<span class="kw">let</span> (<span class="kw-2">mut</span> <span class="ident">t1</span>, <span class="ident">t2</span>) <span class="op">=</span> <span class="ident">xs</span>.<span class="ident">into_iter</span>().<span class="ident">tee</span>();
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">t1</span>.<span class="ident">next</span>(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">t2</span>, <span class="number">0</span>..<span class="number">4</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">t1</span>, <span class="number">1</span>..<span class="number">4</span>);</pre></div>
|
||
</div><h3 id="method.step" class="method"><code>fn <a href="#method.step" class="fnname">step</a>(self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="../itertools/structs/struct.Step.html" title="struct itertools::structs::Step">Step</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Step.html" title="struct itertools::structs::Step">Step</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Step.html" title="struct itertools::structs::Step">Step</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#752-756" title="goto source code">[src]</a></h3><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 0.8.0: <p>Use std .step_by() instead</p>
|
||
</div></div><div class="docblock"><p>Return an iterator adaptor that steps <code>n</code> elements in the base iterator
|
||
for each iteration.</p>
|
||
<p>The iterator steps by yielding the next element from the base iterator,
|
||
then skipping forward <code>n - 1</code> elements.</p>
|
||
<p>Iterator element type is <code>Self::Item</code>.</p>
|
||
<p><strong>Panics</strong> if the step is 0.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">8</span>).<span class="ident">step</span>(<span class="number">3</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>, <span class="number">3</span>, <span class="number">6</span>]);</pre></div>
|
||
</div><h3 id="method.map_into" class="method"><code>fn <a href="#method.map_into" class="fnname">map_into</a><R>(self) -> <a class="type" href="../itertools/structs/type.MapInto.html" title="type itertools::structs::MapInto">MapInto</a><Self, R> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><R>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#765-770" title="goto source code">[src]</a></h3><div class="docblock"><p>Convert each item of the iterator using the <code>Into</code> trait.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
(<span class="number">1i32</span>..<span class="number">42i32</span>).<span class="ident">map_into</span>::<span class="op"><</span><span class="ident">f64</span><span class="op">></span>().<span class="ident">collect_vec</span>();</pre></div>
|
||
</div><h3 id="method.map_results" class="method"><code>fn <a href="#method.map_results" class="fnname">map_results</a><F, T, U, E>(self, f: F) -> <a class="type" href="../itertools/structs/type.MapOk.html" title="type itertools::structs::MapOk">MapOk</a><Self, F> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(T) -> U, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#774-779" title="goto source code">[src]</a></h3><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 0.10.0: <p>Use .map_ok() instead</p>
|
||
</div></div><div class="docblock"><p>See <a href="#method.map_ok"><code>.map_ok()</code></a>.</p>
|
||
</div><h3 id="method.map_ok" class="method"><code>fn <a href="#method.map_ok" class="fnname">map_ok</a><F, T, U, E>(self, f: F) -> <a class="type" href="../itertools/structs/type.MapOk.html" title="type itertools::structs::MapOk">MapOk</a><Self, F> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(T) -> U, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#792-797" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that applies the provided closure
|
||
to every <code>Result::Ok</code> value. <code>Result::Err</code> values are
|
||
unchanged.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">input</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="prelude-val">Ok</span>(<span class="number">41</span>), <span class="prelude-val">Err</span>(<span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">11</span>)];
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> <span class="ident">input</span>.<span class="ident">into_iter</span>().<span class="ident">map_ok</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="ident">i</span> <span class="op">+</span> <span class="number">1</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="prelude-val">Ok</span>(<span class="number">42</span>), <span class="prelude-val">Err</span>(<span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">12</span>)]);</pre></div>
|
||
</div><h3 id="method.filter_ok" class="method"><code>fn <a href="#method.filter_ok" class="fnname">filter_ok</a><F, T, E>(self, f: F) -> <a class="struct" href="../itertools/structs/struct.FilterOk.html" title="struct itertools::structs::FilterOk">FilterOk</a><Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.FilterOk.html" title="struct itertools::structs::FilterOk">FilterOk</a><I, F></h3><code class="content"><span class="where fmt-newline">impl<I, F, T, E> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.FilterOk.html" title="struct itertools::structs::FilterOk">FilterOk</a><I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#810-815" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that filters every <code>Result::Ok</code>
|
||
value with the provided closure. <code>Result::Err</code> values are
|
||
unchanged.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">input</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="prelude-val">Ok</span>(<span class="number">22</span>), <span class="prelude-val">Err</span>(<span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">11</span>)];
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> <span class="ident">input</span>.<span class="ident">into_iter</span>().<span class="ident">filter_ok</span>(<span class="op">|</span><span class="kw-2">&</span><span class="ident">i</span><span class="op">|</span> <span class="ident">i</span> <span class="op">></span> <span class="number">20</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="prelude-val">Ok</span>(<span class="number">22</span>), <span class="prelude-val">Err</span>(<span class="bool-val">false</span>)]);</pre></div>
|
||
</div><h3 id="method.filter_map_ok" class="method"><code>fn <a href="#method.filter_map_ok" class="fnname">filter_map_ok</a><F, T, U, E>(self, f: F) -> <a class="struct" href="../itertools/structs/struct.FilterMapOk.html" title="struct itertools::structs::FilterMapOk">FilterMapOk</a><Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.FilterMapOk.html" title="struct itertools::structs::FilterMapOk">FilterMapOk</a><I, F></h3><code class="content"><span class="where fmt-newline">impl<I, F, T, U, E> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.FilterMapOk.html" title="struct itertools::structs::FilterMapOk">FilterMapOk</a><I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(T) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><U>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, E>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(T) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><U>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#828-833" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that filters and transforms every
|
||
<code>Result::Ok</code> value with the provided closure. <code>Result::Err</code>
|
||
values are unchanged.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">input</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="prelude-val">Ok</span>(<span class="number">22</span>), <span class="prelude-val">Err</span>(<span class="bool-val">false</span>), <span class="prelude-val">Ok</span>(<span class="number">11</span>)];
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> <span class="ident">input</span>.<span class="ident">into_iter</span>().<span class="ident">filter_map_ok</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="kw">if</span> <span class="ident">i</span> <span class="op">></span> <span class="number">20</span> { <span class="prelude-val">Some</span>(<span class="ident">i</span> <span class="op">*</span> <span class="number">2</span>) } <span class="kw">else</span> { <span class="prelude-val">None</span> });
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="prelude-val">Ok</span>(<span class="number">44</span>), <span class="prelude-val">Err</span>(<span class="bool-val">false</span>)]);</pre></div>
|
||
</div><h3 id="method.merge" class="method"><code>fn <a href="#method.merge" class="fnname">merge</a><J>(self, other: J) -> <a class="type" href="../itertools/structs/type.Merge.html" title="type itertools::structs::Merge">Merge</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#849-855" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that merges the two base iterators in
|
||
ascending order. If both base iterators are sorted (ascending), the
|
||
result is sorted.</p>
|
||
<p>Iterator element type is <code>Self::Item</code>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">11</span>).<span class="ident">step</span>(<span class="number">3</span>);
|
||
<span class="kw">let</span> <span class="ident">b</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">11</span>).<span class="ident">step</span>(<span class="number">5</span>);
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> <span class="ident">a</span>.<span class="ident">merge</span>(<span class="ident">b</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>, <span class="number">0</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">9</span>, <span class="number">10</span>]);</pre></div>
|
||
</div><h3 id="method.merge_by" class="method"><code>fn <a href="#method.merge_by" class="fnname">merge_by</a><J, F>(self, other: J, is_first: F) -> <a class="struct" href="../itertools/structs/struct.MergeBy.html" title="struct itertools::structs::MergeBy">MergeBy</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.MergeBy.html" title="struct itertools::structs::MergeBy">MergeBy</a><I, J, F></h3><code class="content"><span class="where fmt-newline">impl<I, J, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.MergeBy.html" title="struct itertools::structs::MergeBy">MergeBy</a><I, J, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>,<br> F: MergePredicate<I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#873-879" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that merges the two base iterators in order.
|
||
This is much like <code>.merge()</code> but allows for a custom ordering.</p>
|
||
<p>This can be especially useful for sequences of tuples.</p>
|
||
<p>Iterator element type is <code>Self::Item</code>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> (<span class="number">0</span>..).<span class="ident">zip</span>(<span class="string">"bc"</span>.<span class="ident">chars</span>());
|
||
<span class="kw">let</span> <span class="ident">b</span> <span class="op">=</span> (<span class="number">0</span>..).<span class="ident">zip</span>(<span class="string">"ad"</span>.<span class="ident">chars</span>());
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> <span class="ident">a</span>.<span class="ident">merge_by</span>(<span class="ident">b</span>, <span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span>.<span class="number">1</span> <span class="op"><</span><span class="op">=</span> <span class="ident">y</span>.<span class="number">1</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">0</span>, <span class="string">'a'</span>), (<span class="number">0</span>, <span class="string">'b'</span>), (<span class="number">1</span>, <span class="string">'c'</span>), (<span class="number">1</span>, <span class="string">'d'</span>)]);</pre></div>
|
||
</div><h3 id="method.merge_join_by" class="method"><code>fn <a href="#method.merge_join_by" class="fnname">merge_join_by</a><J, F>(<br> self, <br> other: J, <br> cmp_fn: F<br>) -> <a class="struct" href="../itertools/structs/struct.MergeJoinBy.html" title="struct itertools::structs::MergeJoinBy">MergeJoinBy</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.MergeJoinBy.html" title="struct itertools::structs::MergeJoinBy">MergeJoinBy</a><I, J, F></h3><code class="content"><span class="where fmt-newline">impl<I, J, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.MergeJoinBy.html" title="struct itertools::structs::MergeJoinBy">MergeJoinBy</a><I, J, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="enum" href="../itertools/enum.EitherOrBoth.html" title="enum itertools::EitherOrBoth">EitherOrBoth</a><I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#909-915" title="goto source code">[src]</a></h3><div class="docblock"><p>Create an iterator that merges items from both this and the specified
|
||
iterator in ascending order.</p>
|
||
<p>It chooses whether to pair elements based on the <code>Ordering</code> returned by the
|
||
specified compare function. At any point, inspecting the tip of the
|
||
iterators <code>I</code> and <code>J</code> as items <code>i</code> of type <code>I::Item</code> and <code>j</code> of type
|
||
<code>J::Item</code> respectively, the resulting iterator will:</p>
|
||
<ul>
|
||
<li>Emit <code>EitherOrBoth::Left(i)</code> when <code>i < j</code>,
|
||
and remove <code>i</code> from its source iterator</li>
|
||
<li>Emit <code>EitherOrBoth::Right(j)</code> when <code>i > j</code>,
|
||
and remove <code>j</code> from its source iterator</li>
|
||
<li>Emit <code>EitherOrBoth::Both(i, j)</code> when <code>i == j</code>,
|
||
and remove both <code>i</code> and <code>j</code> from their respective source iterators</li>
|
||
</ul>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">EitherOrBoth</span>::{<span class="ident">Left</span>, <span class="ident">Right</span>, <span class="ident">Both</span>};
|
||
|
||
<span class="kw">let</span> <span class="ident">multiples_of_2</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">10</span>).<span class="ident">step</span>(<span class="number">2</span>);
|
||
<span class="kw">let</span> <span class="ident">multiples_of_3</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">10</span>).<span class="ident">step</span>(<span class="number">3</span>);
|
||
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(
|
||
<span class="ident">multiples_of_2</span>.<span class="ident">merge_join_by</span>(<span class="ident">multiples_of_3</span>, <span class="op">|</span><span class="ident">i</span>, <span class="ident">j</span><span class="op">|</span> <span class="ident">i</span>.<span class="ident">cmp</span>(<span class="ident">j</span>)),
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="ident">Both</span>(<span class="number">0</span>, <span class="number">0</span>), <span class="ident">Left</span>(<span class="number">2</span>), <span class="ident">Right</span>(<span class="number">3</span>), <span class="ident">Left</span>(<span class="number">4</span>), <span class="ident">Both</span>(<span class="number">6</span>, <span class="number">6</span>), <span class="ident">Left</span>(<span class="number">8</span>), <span class="ident">Right</span>(<span class="number">9</span>)]
|
||
);</pre></div>
|
||
</div><h3 id="method.kmerge" class="method"><code>fn <a href="#method.kmerge" class="fnname">kmerge</a>(self) -> <a class="type" href="../itertools/structs/type.KMerge.html" title="type itertools::structs::KMerge">KMerge</a><<Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,<br> <Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#934-940" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that flattens an iterator of iterators by
|
||
merging them in ascending order.</p>
|
||
<p>If all base iterators are sorted (ascending), the result is sorted.</p>
|
||
<p>Iterator element type is <code>Self::Item</code>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">6</span>).<span class="ident">step</span>(<span class="number">3</span>);
|
||
<span class="kw">let</span> <span class="ident">b</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">6</span>).<span class="ident">step</span>(<span class="number">3</span>);
|
||
<span class="kw">let</span> <span class="ident">c</span> <span class="op">=</span> (<span class="number">2</span>..<span class="number">6</span>).<span class="ident">step</span>(<span class="number">3</span>);
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="ident">a</span>, <span class="ident">b</span>, <span class="ident">c</span>].<span class="ident">into_iter</span>().<span class="ident">kmerge</span>();
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>]);</pre></div>
|
||
</div><h3 id="method.kmerge_by" class="method"><code>fn <a href="#method.kmerge_by" class="fnname">kmerge_by</a><F>(<br> self, <br> first: F<br>) -> <a class="struct" href="../itertools/structs/struct.KMergeBy.html" title="struct itertools::structs::KMergeBy">KMergeBy</a><<Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.KMergeBy.html" title="struct itertools::structs::KMergeBy">KMergeBy</a><I, F></h3><code class="content"><span class="where fmt-newline">impl<I, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.KMergeBy.html" title="struct itertools::structs::KMergeBy">KMergeBy</a><I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> F: KMergePredicate<I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&<Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>, &<Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#963-971" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that flattens an iterator of iterators by
|
||
merging them according to the given closure.</p>
|
||
<p>The closure <code>first</code> is called with two elements <em>a</em>, <em>b</em> and should
|
||
return <code>true</code> if <em>a</em> is ordered before <em>b</em>.</p>
|
||
<p>If all base iterators are sorted according to <code>first</code>, the result is
|
||
sorted.</p>
|
||
<p>Iterator element type is <code>Self::Item</code>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="op">-</span><span class="number">1f64</span>, <span class="number">2.</span>, <span class="number">3.</span>, <span class="op">-</span><span class="number">5.</span>, <span class="number">6.</span>, <span class="op">-</span><span class="number">7.</span>];
|
||
<span class="kw">let</span> <span class="ident">b</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">0.</span>, <span class="number">2.</span>, <span class="op">-</span><span class="number">4.</span>];
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">it</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="ident">a</span>, <span class="ident">b</span>].<span class="ident">into_iter</span>().<span class="ident">kmerge_by</span>(<span class="op">|</span><span class="ident">a</span>, <span class="ident">b</span><span class="op">|</span> <span class="ident">a</span>.<span class="ident">abs</span>() <span class="op"><</span> <span class="ident">b</span>.<span class="ident">abs</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">it</span>.<span class="ident">next</span>(), <span class="prelude-val">Some</span>(<span class="number">0.</span>));
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">it</span>.<span class="ident">last</span>(), <span class="prelude-val">Some</span>(<span class="op">-</span><span class="number">7.</span>));</pre></div>
|
||
</div><h3 id="method.cartesian_product" class="method"><code>fn <a href="#method.cartesian_product" class="fnname">cartesian_product</a><J>(self, other: J) -> <a class="struct" href="../itertools/structs/struct.Product.html" title="struct itertools::structs::Product">Product</a><Self, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Product.html" title="struct itertools::structs::Product">Product</a><I, J></h3><code class="content"><span class="where fmt-newline">impl<I, J> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Product.html" title="struct itertools::structs::Product">Product</a><I, J> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,<br> J::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#984-991" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that iterates over the cartesian product of
|
||
the element sets of two iterators <code>self</code> and <code>J</code>.</p>
|
||
<p>Iterator element type is <code>(Self::Item, J::Item)</code>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">2</span>).<span class="ident">cartesian_product</span>(<span class="string">"αβ"</span>.<span class="ident">chars</span>());
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">0</span>, <span class="string">'α'</span>), (<span class="number">0</span>, <span class="string">'β'</span>), (<span class="number">1</span>, <span class="string">'α'</span>), (<span class="number">1</span>, <span class="string">'β'</span>)]);</pre></div>
|
||
</div><h3 id="method.multi_cartesian_product" class="method"><code>fn <a href="#method.multi_cartesian_product" class="fnname">multi_cartesian_product</a>(<br> self<br>) -> <a class="struct" href="../itertools/structs/struct.MultiProduct.html" title="struct itertools::structs::MultiProduct">MultiProduct</a><<Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.MultiProduct.html" title="struct itertools::structs::MultiProduct">MultiProduct</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.MultiProduct.html" title="struct itertools::structs::MultiProduct">MultiProduct</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,<br> <Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> <Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1019-1026" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that iterates over the cartesian product of
|
||
all subiterators returned by meta-iterator <code>self</code>.</p>
|
||
<p>All provided iterators must yield the same <code>Item</code> type. To generate
|
||
the product of iterators yielding multiple types, use the
|
||
<a href="macro.iproduct.html"><code>iproduct</code></a> macro instead.</p>
|
||
<p>The iterator element type is <code>Vec<T></code>, where <code>T</code> is the iterator element
|
||
of the subiterators.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">multi_prod</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">3</span>).<span class="ident">map</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> (<span class="ident">i</span> <span class="op">*</span> <span class="number">2</span>)..(<span class="ident">i</span> <span class="op">*</span> <span class="number">2</span> <span class="op">+</span> <span class="number">2</span>))
|
||
.<span class="ident">multi_cartesian_product</span>();
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">multi_prod</span>.<span class="ident">next</span>(), <span class="prelude-val">Some</span>(<span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>, <span class="number">2</span>, <span class="number">4</span>]));
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">multi_prod</span>.<span class="ident">next</span>(), <span class="prelude-val">Some</span>(<span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>, <span class="number">2</span>, <span class="number">5</span>]));
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">multi_prod</span>.<span class="ident">next</span>(), <span class="prelude-val">Some</span>(<span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>, <span class="number">3</span>, <span class="number">4</span>]));
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">multi_prod</span>.<span class="ident">next</span>(), <span class="prelude-val">Some</span>(<span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>, <span class="number">3</span>, <span class="number">5</span>]));
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">multi_prod</span>.<span class="ident">next</span>(), <span class="prelude-val">Some</span>(<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>]));
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">multi_prod</span>.<span class="ident">next</span>(), <span class="prelude-val">Some</span>(<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">5</span>]));
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">multi_prod</span>.<span class="ident">next</span>(), <span class="prelude-val">Some</span>(<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">3</span>, <span class="number">4</span>]));
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">multi_prod</span>.<span class="ident">next</span>(), <span class="prelude-val">Some</span>(<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">3</span>, <span class="number">5</span>]));
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">multi_prod</span>.<span class="ident">next</span>(), <span class="prelude-val">None</span>);</pre></div>
|
||
</div><h3 id="method.coalesce" class="method"><code>fn <a href="#method.coalesce" class="fnname">coalesce</a><F>(self, f: F) -> <a class="type" href="../itertools/structs/type.Coalesce.html" title="type itertools::structs::Coalesce">Coalesce</a><Self, F> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1056-1062" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that uses the passed-in closure to
|
||
optionally merge together consecutive elements.</p>
|
||
<p>The closure <code>f</code> is passed two elements, <code>previous</code> and <code>current</code> and may
|
||
return either (1) <code>Ok(combined)</code> to merge the two values or
|
||
(2) <code>Err((previous', current'))</code> to indicate they can't be merged.
|
||
In (2), the value <code>previous'</code> is emitted by the iterator.
|
||
Either (1) <code>combined</code> or (2) <code>current'</code> becomes the previous value
|
||
when coalesce continues with the next pair of elements to merge. The
|
||
value that remains at the end is also emitted by the iterator.</p>
|
||
<p>Iterator element type is <code>Self::Item</code>.</p>
|
||
<p>This iterator is <em>fused</em>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="comment">// sum same-sign runs together</span>
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="op">-</span><span class="number">1.</span>, <span class="op">-</span><span class="number">2.</span>, <span class="op">-</span><span class="number">3.</span>, <span class="number">3.</span>, <span class="number">1.</span>, <span class="number">0.</span>, <span class="op">-</span><span class="number">1.</span>];
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">data</span>.<span class="ident">into_iter</span>().<span class="ident">coalesce</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span>
|
||
<span class="kw">if</span> (<span class="ident">x</span> <span class="op">></span><span class="op">=</span> <span class="number">0.</span>) <span class="op">=</span><span class="op">=</span> (<span class="ident">y</span> <span class="op">></span><span class="op">=</span> <span class="number">0.</span>) {
|
||
<span class="prelude-val">Ok</span>(<span class="ident">x</span> <span class="op">+</span> <span class="ident">y</span>)
|
||
} <span class="kw">else</span> {
|
||
<span class="prelude-val">Err</span>((<span class="ident">x</span>, <span class="ident">y</span>))
|
||
}),
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="op">-</span><span class="number">6.</span>, <span class="number">4.</span>, <span class="op">-</span><span class="number">1.</span>]);</pre></div>
|
||
</div><h3 id="method.dedup" class="method"><code>fn <a href="#method.dedup" class="fnname">dedup</a>(self) -> <a class="type" href="../itertools/structs/type.Dedup.html" title="type itertools::structs::Dedup">Dedup</a><Self> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1078-1083" title="goto source code">[src]</a></h3><div class="docblock"><p>Remove duplicates from sections of consecutive identical elements.
|
||
If the iterator is sorted, all elements will be unique.</p>
|
||
<p>Iterator element type is <code>Self::Item</code>.</p>
|
||
<p>This iterator is <em>fused</em>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">1.</span>, <span class="number">1.</span>, <span class="number">2.</span>, <span class="number">3.</span>, <span class="number">3.</span>, <span class="number">2.</span>, <span class="number">2.</span>];
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">data</span>.<span class="ident">into_iter</span>().<span class="ident">dedup</span>(),
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1.</span>, <span class="number">2.</span>, <span class="number">3.</span>, <span class="number">2.</span>]);</pre></div>
|
||
</div><h3 id="method.dedup_by" class="method"><code>fn <a href="#method.dedup_by" class="fnname">dedup_by</a><Cmp>(self, cmp: Cmp) -> <a class="type" href="../itertools/structs/type.DedupBy.html" title="type itertools::structs::DedupBy">DedupBy</a><Self, Cmp> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Cmp: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1100-1105" title="goto source code">[src]</a></h3><div class="docblock"><p>Remove duplicates from sections of consecutive identical elements,
|
||
determining equality using a comparison function.
|
||
If the iterator is sorted, all elements will be unique.</p>
|
||
<p>Iterator element type is <code>Self::Item</code>.</p>
|
||
<p>This iterator is <em>fused</em>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">0</span>, <span class="number">1.</span>), (<span class="number">1</span>, <span class="number">1.</span>), (<span class="number">0</span>, <span class="number">2.</span>), (<span class="number">0</span>, <span class="number">3.</span>), (<span class="number">1</span>, <span class="number">3.</span>), (<span class="number">1</span>, <span class="number">2.</span>), (<span class="number">2</span>, <span class="number">2.</span>)];
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">data</span>.<span class="ident">into_iter</span>().<span class="ident">dedup_by</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span>.<span class="number">1</span> <span class="op">=</span><span class="op">=</span> <span class="ident">y</span>.<span class="number">1</span>),
|
||
<span class="macro">vec</span><span class="macro">!</span>[(<span class="number">0</span>, <span class="number">1.</span>), (<span class="number">0</span>, <span class="number">2.</span>), (<span class="number">0</span>, <span class="number">3.</span>), (<span class="number">1</span>, <span class="number">2.</span>)]);</pre></div>
|
||
</div><h3 id="method.dedup_with_count" class="method"><code>fn <a href="#method.dedup_with_count" class="fnname">dedup_with_count</a>(self) -> <a class="type" href="../itertools/structs/type.DedupWithCount.html" title="type itertools::structs::DedupWithCount">DedupWithCount</a><Self> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1122-1126" title="goto source code">[src]</a></h3><div class="docblock"><p>Remove duplicates from sections of consecutive identical elements, while keeping a count of
|
||
how many repeated elements were present.
|
||
If the iterator is sorted, all elements will be unique.</p>
|
||
<p>Iterator element type is <code>(usize, Self::Item)</code>.</p>
|
||
<p>This iterator is <em>fused</em>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">1.</span>, <span class="number">1.</span>, <span class="number">2.</span>, <span class="number">3.</span>, <span class="number">3.</span>, <span class="number">2.</span>, <span class="number">2.</span>];
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">data</span>.<span class="ident">into_iter</span>().<span class="ident">dedup_with_count</span>(),
|
||
<span class="macro">vec</span><span class="macro">!</span>[(<span class="number">2</span>, <span class="number">1.</span>), (<span class="number">1</span>, <span class="number">2.</span>), (<span class="number">2</span>, <span class="number">3.</span>), (<span class="number">2</span>, <span class="number">2.</span>)]);</pre></div>
|
||
</div><h3 id="method.dedup_by_with_count" class="method"><code>fn <a href="#method.dedup_by_with_count" class="fnname">dedup_by_with_count</a><Cmp>(self, cmp: Cmp) -> <a class="type" href="../itertools/structs/type.DedupByWithCount.html" title="type itertools::structs::DedupByWithCount">DedupByWithCount</a><Self, Cmp> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Cmp: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1144-1149" title="goto source code">[src]</a></h3><div class="docblock"><p>Remove duplicates from sections of consecutive identical elements, while keeping a count of
|
||
how many repeated elements were present.
|
||
This will determine equality using a comparison function.
|
||
If the iterator is sorted, all elements will be unique.</p>
|
||
<p>Iterator element type is <code>(usize, Self::Item)</code>.</p>
|
||
<p>This iterator is <em>fused</em>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">0</span>, <span class="number">1.</span>), (<span class="number">1</span>, <span class="number">1.</span>), (<span class="number">0</span>, <span class="number">2.</span>), (<span class="number">0</span>, <span class="number">3.</span>), (<span class="number">1</span>, <span class="number">3.</span>), (<span class="number">1</span>, <span class="number">2.</span>), (<span class="number">2</span>, <span class="number">2.</span>)];
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">data</span>.<span class="ident">into_iter</span>().<span class="ident">dedup_by_with_count</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span>.<span class="number">1</span> <span class="op">=</span><span class="op">=</span> <span class="ident">y</span>.<span class="number">1</span>),
|
||
<span class="macro">vec</span><span class="macro">!</span>[(<span class="number">2</span>, (<span class="number">0</span>, <span class="number">1.</span>)), (<span class="number">1</span>, (<span class="number">0</span>, <span class="number">2.</span>)), (<span class="number">2</span>, (<span class="number">0</span>, <span class="number">3.</span>)), (<span class="number">2</span>, (<span class="number">1</span>, <span class="number">2.</span>))]);</pre></div>
|
||
</div><h3 id="method.unique" class="method"><code>fn <a href="#method.unique" class="fnname">unique</a>(self) -> <a class="struct" href="../itertools/structs/struct.Unique.html" title="struct itertools::structs::Unique">Unique</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Unique.html" title="struct itertools::structs::Unique">Unique</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Unique.html" title="struct itertools::structs::Unique">Unique</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1170-1175" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that filters out elements that have
|
||
already been produced once during the iteration. Duplicates
|
||
are detected using hash and equality.</p>
|
||
<p>Clones of visited elements are stored in a hash set in the
|
||
iterator.</p>
|
||
<p>The iterator is stable, returning the non-duplicate items in the order
|
||
in which they occur in the adapted iterator. In a set of duplicate
|
||
items, the first item encountered is the item retained.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">10</span>, <span class="number">20</span>, <span class="number">30</span>, <span class="number">20</span>, <span class="number">40</span>, <span class="number">10</span>, <span class="number">50</span>];
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">data</span>.<span class="ident">into_iter</span>().<span class="ident">unique</span>(),
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">10</span>, <span class="number">20</span>, <span class="number">30</span>, <span class="number">40</span>, <span class="number">50</span>]);</pre></div>
|
||
</div><h3 id="method.unique_by" class="method"><code>fn <a href="#method.unique_by" class="fnname">unique_by</a><V, F>(self, f: F) -> <a class="struct" href="../itertools/structs/struct.UniqueBy.html" title="struct itertools::structs::UniqueBy">UniqueBy</a><Self, V, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.UniqueBy.html" title="struct itertools::structs::UniqueBy">UniqueBy</a><I, V, F></h3><code class="content"><span class="where fmt-newline">impl<I, V, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.UniqueBy.html" title="struct itertools::structs::UniqueBy">UniqueBy</a><I, V, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> V: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> V, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> V: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> V, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1196-1202" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that filters out elements that have
|
||
already been produced once during the iteration.</p>
|
||
<p>Duplicates are detected by comparing the key they map to
|
||
with the keying function <code>f</code> by hash and equality.
|
||
The keys are stored in a hash set in the iterator.</p>
|
||
<p>The iterator is stable, returning the non-duplicate items in the order
|
||
in which they occur in the adapted iterator. In a set of duplicate
|
||
items, the first item encountered is the item retained.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="string">"a"</span>, <span class="string">"bb"</span>, <span class="string">"aa"</span>, <span class="string">"c"</span>, <span class="string">"ccc"</span>];
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">data</span>.<span class="ident">into_iter</span>().<span class="ident">unique_by</span>(<span class="op">|</span><span class="ident">s</span><span class="op">|</span> <span class="ident">s</span>.<span class="ident">len</span>()),
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="string">"a"</span>, <span class="string">"bb"</span>, <span class="string">"ccc"</span>]);</pre></div>
|
||
</div><h3 id="method.peeking_take_while" class="method"><code>fn <a href="#method.peeking_take_while" class="fnname">peeking_take_while</a><F>(&mut self, accept: F) -> <a class="struct" href="../itertools/structs/struct.PeekingTakeWhile.html" title="struct itertools::structs::PeekingTakeWhile">PeekingTakeWhile</a><'_, Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.PeekingTakeWhile.html" title="struct itertools::structs::PeekingTakeWhile">PeekingTakeWhile</a><'a, I, F></h3><code class="content"><span class="where fmt-newline">impl<'a, I, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.PeekingTakeWhile.html" title="struct itertools::structs::PeekingTakeWhile">PeekingTakeWhile</a><'a, I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="../itertools/trait.PeekingNext.html" title="trait itertools::PeekingNext">PeekingNext</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="../itertools/trait.PeekingNext.html" title="trait itertools::PeekingNext">PeekingNext</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1216-1221" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that borrows from this iterator and
|
||
takes items while the closure <code>accept</code> returns <code>true</code>.</p>
|
||
<p>This adaptor can only be used on iterators that implement <code>PeekingNext</code>
|
||
like <code>.peekable()</code>, <code>put_back</code> and a few other collection iterators.</p>
|
||
<p>The last and rejected element (first <code>false</code>) is still available when
|
||
<code>peeking_take_while</code> is done.</p>
|
||
<p>See also <a href="#method.take_while_ref"><code>.take_while_ref()</code></a>
|
||
which is a similar adaptor.</p>
|
||
</div><h3 id="method.take_while_ref" class="method"><code>fn <a href="#method.take_while_ref" class="fnname">take_while_ref</a><F>(&mut self, accept: F) -> <a class="struct" href="../itertools/structs/struct.TakeWhileRef.html" title="struct itertools::structs::TakeWhileRef">TakeWhileRef</a><'_, Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.TakeWhileRef.html" title="struct itertools::structs::TakeWhileRef">TakeWhileRef</a><'a, I, F></h3><code class="content"><span class="where fmt-newline">impl<'a, I, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.TakeWhileRef.html" title="struct itertools::structs::TakeWhileRef">TakeWhileRef</a><'a, I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1241-1246" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that borrows from a <code>Clone</code>-able iterator
|
||
to only pick off elements while the predicate <code>accept</code> returns <code>true</code>.</p>
|
||
<p>It uses the <code>Clone</code> trait to restore the original iterator so that the
|
||
last and rejected element (first <code>false</code>) is still available when
|
||
<code>take_while_ref</code> is done.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">hexadecimals</span> <span class="op">=</span> <span class="string">"0123456789abcdef"</span>.<span class="ident">chars</span>();
|
||
|
||
<span class="kw">let</span> <span class="ident">decimals</span> <span class="op">=</span> <span class="ident">hexadecimals</span>.<span class="ident">take_while_ref</span>(<span class="op">|</span><span class="ident">c</span><span class="op">|</span> <span class="ident">c</span>.<span class="ident">is_numeric</span>())
|
||
.<span class="ident">collect</span>::<span class="op"><</span><span class="ident">String</span><span class="op">></span>();
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">decimals</span>, <span class="string">"0123456789"</span>);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">hexadecimals</span>.<span class="ident">next</span>(), <span class="prelude-val">Some</span>(<span class="string">'a'</span>));
|
||
</pre></div>
|
||
</div><h3 id="method.while_some" class="method"><code>fn <a href="#method.while_some" class="fnname">while_some</a><A>(self) -> <a class="struct" href="../itertools/structs/struct.WhileSome.html" title="struct itertools::structs::WhileSome">WhileSome</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.WhileSome.html" title="struct itertools::structs::WhileSome">WhileSome</a><I></h3><code class="content"><span class="where fmt-newline">impl<I, A> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.WhileSome.html" title="struct itertools::structs::WhileSome">WhileSome</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><A>>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = A;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><A>>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1262-1266" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that filters <code>Option<A></code> iterator elements
|
||
and produces <code>A</code>. Stops on the first <code>None</code> encountered.</p>
|
||
<p>Iterator element type is <code>A</code>, the unwrapped element.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="comment">// List all hexadecimal digits</span>
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(
|
||
(<span class="number">0</span>..).<span class="ident">map</span>(<span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="ident">std</span>::<span class="ident">char</span>::<span class="ident">from_digit</span>(<span class="ident">i</span>, <span class="number">16</span>)).<span class="ident">while_some</span>(),
|
||
<span class="string">"0123456789abcdef"</span>.<span class="ident">chars</span>());
|
||
</pre></div>
|
||
</div><h3 id="method.tuple_combinations" class="method"><code>fn <a href="#method.tuple_combinations" class="fnname">tuple_combinations</a><T>(self) -> <a class="struct" href="../itertools/structs/struct.TupleCombinations.html" title="struct itertools::structs::TupleCombinations">TupleCombinations</a><Self, T><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.TupleCombinations.html" title="struct itertools::structs::TupleCombinations">TupleCombinations</a><I, T></h3><code class="content"><span class="where fmt-newline">impl<I, T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.TupleCombinations.html" title="struct itertools::structs::TupleCombinations">TupleCombinations</a><I, T> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> T: HasCombination<I>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = T;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br> T: HasCombination<Self>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1301-1307" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that iterates over the combinations of the
|
||
elements from an iterator.</p>
|
||
<p>Iterator element can be any homogeneous tuple of type <code>Self::Item</code> with
|
||
size up to 12.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">v</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">new</span>();
|
||
<span class="kw">for</span> (<span class="ident">a</span>, <span class="ident">b</span>) <span class="kw">in</span> (<span class="number">1</span>..<span class="number">5</span>).<span class="ident">tuple_combinations</span>() {
|
||
<span class="ident">v</span>.<span class="ident">push</span>((<span class="ident">a</span>, <span class="ident">b</span>));
|
||
}
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">v</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">1</span>, <span class="number">2</span>), (<span class="number">1</span>, <span class="number">3</span>), (<span class="number">1</span>, <span class="number">4</span>), (<span class="number">2</span>, <span class="number">3</span>), (<span class="number">2</span>, <span class="number">4</span>), (<span class="number">3</span>, <span class="number">4</span>)]);
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">5</span>).<span class="ident">tuple_combinations</span>();
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">Some</span>((<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>)), <span class="ident">it</span>.<span class="ident">next</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">Some</span>((<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>)), <span class="ident">it</span>.<span class="ident">next</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">Some</span>((<span class="number">1</span>, <span class="number">3</span>, <span class="number">4</span>)), <span class="ident">it</span>.<span class="ident">next</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">Some</span>((<span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>)), <span class="ident">it</span>.<span class="ident">next</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">None</span>, <span class="ident">it</span>.<span class="ident">next</span>());
|
||
|
||
<span class="comment">// this requires a type hint</span>
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">5</span>).<span class="ident">tuple_combinations</span>::<span class="op"><</span>(<span class="kw">_</span>, <span class="kw">_</span>, <span class="kw">_</span>)<span class="op">></span>();
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>), (<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>), (<span class="number">1</span>, <span class="number">3</span>, <span class="number">4</span>), (<span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>)]);
|
||
|
||
<span class="comment">// you can also specify the complete type</span>
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">TupleCombinations</span>;
|
||
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">ops</span>::<span class="ident">Range</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span>: <span class="ident">TupleCombinations</span><span class="op"><</span><span class="ident">Range</span><span class="op"><</span><span class="ident">u32</span><span class="op">></span>, (<span class="ident">u32</span>, <span class="ident">u32</span>, <span class="ident">u32</span>)<span class="op">></span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">5</span>).<span class="ident">tuple_combinations</span>();
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>), (<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>), (<span class="number">1</span>, <span class="number">3</span>, <span class="number">4</span>), (<span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>)]);</pre></div>
|
||
</div><h3 id="method.combinations" class="method"><code>fn <a href="#method.combinations" class="fnname">combinations</a>(self, k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="../itertools/structs/struct.Combinations.html" title="struct itertools::structs::Combinations">Combinations</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Combinations.html" title="struct itertools::structs::Combinations">Combinations</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Combinations.html" title="struct itertools::structs::Combinations">Combinations</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1339-1344" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that iterates over the <code>k</code>-length combinations of
|
||
the elements from an iterator.</p>
|
||
<p>Iterator element type is <code>Vec<Self::Item></code>. The iterator produces a new Vec per iteration,
|
||
and clones the iterator elements.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">5</span>).<span class="ident">combinations</span>(<span class="number">3</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">3</span>, <span class="number">4</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>],
|
||
]);</pre></div>
|
||
<p>Note: Combinations does not take into account the equality of the iterated values.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">2</span>].<span class="ident">into_iter</span>().<span class="ident">combinations</span>(<span class="number">2</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">2</span>], <span class="comment">// Note: these are the same</span>
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">2</span>], <span class="comment">// Note: these are the same</span>
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">2</span>, <span class="number">2</span>],
|
||
]);</pre></div>
|
||
</div><h3 id="method.combinations_with_replacement" class="method"><code>fn <a href="#method.combinations_with_replacement" class="fnname">combinations_with_replacement</a>(<br> self, <br> k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -> <a class="struct" href="../itertools/structs/struct.CombinationsWithReplacement.html" title="struct itertools::structs::CombinationsWithReplacement">CombinationsWithReplacement</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.CombinationsWithReplacement.html" title="struct itertools::structs::CombinationsWithReplacement">CombinationsWithReplacement</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.CombinationsWithReplacement.html" title="struct itertools::structs::CombinationsWithReplacement">CombinationsWithReplacement</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1366-1372" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator that iterates over the <code>k</code>-length combinations of
|
||
the elements from an iterator, with replacement.</p>
|
||
<p>Iterator element type is <code>Vec<Self::Item></code>. The iterator produces a new Vec per iteration,
|
||
and clones the iterator elements.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">4</span>).<span class="ident">combinations_with_replacement</span>(<span class="number">2</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">1</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">2</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">3</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">2</span>, <span class="number">2</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">2</span>, <span class="number">3</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">3</span>, <span class="number">3</span>],
|
||
]);</pre></div>
|
||
</div><h3 id="method.permutations" class="method"><code>fn <a href="#method.permutations" class="fnname">permutations</a>(self, k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="../itertools/structs/struct.Permutations.html" title="struct itertools::structs::Permutations">Permutations</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Permutations.html" title="struct itertools::structs::Permutations">Permutations</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Permutations.html" title="struct itertools::structs::Permutations">Permutations</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1412-1417" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that iterates over all k-permutations of the
|
||
elements from an iterator.</p>
|
||
<p>Iterator element type is <code>Vec<Self::Item></code> with length <code>k</code>. The iterator
|
||
produces a new Vec per iteration, and clones the iterator elements.</p>
|
||
<p>If <code>k</code> is greater than the length of the input iterator, the resultant
|
||
iterator adaptor will be empty.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">perms</span> <span class="op">=</span> (<span class="number">5</span>..<span class="number">8</span>).<span class="ident">permutations</span>(<span class="number">2</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">perms</span>, <span class="macro">vec</span><span class="macro">!</span>[
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">5</span>, <span class="number">6</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">5</span>, <span class="number">7</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">6</span>, <span class="number">5</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">6</span>, <span class="number">7</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">7</span>, <span class="number">5</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">7</span>, <span class="number">6</span>],
|
||
]);</pre></div>
|
||
<p>Note: Permutations does not take into account the equality of the iterated values.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">2</span>, <span class="number">2</span>].<span class="ident">into_iter</span>().<span class="ident">permutations</span>(<span class="number">2</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">2</span>, <span class="number">2</span>], <span class="comment">// Note: these are the same</span>
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">2</span>, <span class="number">2</span>], <span class="comment">// Note: these are the same</span>
|
||
]);</pre></div>
|
||
<p>Note: The source iterator is collected lazily, and will not be
|
||
re-iterated if the permutations adaptor is completed and re-iterated.</p>
|
||
</div><h3 id="method.powerset" class="method"><code>fn <a href="#method.powerset" class="fnname">powerset</a>(self) -> <a class="struct" href="../itertools/structs/struct.Powerset.html" title="struct itertools::structs::Powerset">Powerset</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Powerset.html" title="struct itertools::structs::Powerset">Powerset</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Powerset.html" title="struct itertools::structs::Powerset">Powerset</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1448-1453" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator that iterates through the powerset of the elements from an
|
||
iterator.</p>
|
||
<p>Iterator element type is <code>Vec<Self::Item></code>. The iterator produces a new <code>Vec</code>
|
||
per iteration, and clones the iterator elements.</p>
|
||
<p>The powerset of a set contains all subsets including the empty set and the full
|
||
input set. A powerset has length <em>2^n</em> where <em>n</em> is the length of the input
|
||
set.</p>
|
||
<p>Each <code>Vec</code> produced by this iterator represents a subset of the elements
|
||
produced by the source iterator.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">sets</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">4</span>).<span class="ident">powerset</span>().<span class="ident">collect</span>::<span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span><span class="op">></span>();
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">sets</span>, <span class="macro">vec</span><span class="macro">!</span>[
|
||
<span class="macro">vec</span><span class="macro">!</span>[],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">2</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">3</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">2</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">3</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">2</span>, <span class="number">3</span>],
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>],
|
||
]);</pre></div>
|
||
</div><h3 id="method.pad_using" class="method"><code>fn <a href="#method.pad_using" class="fnname">pad_using</a><F>(self, min: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, f: F) -> <a class="struct" href="../itertools/structs/struct.PadUsing.html" title="struct itertools::structs::PadUsing">PadUsing</a><Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.PadUsing.html" title="struct itertools::structs::PadUsing">PadUsing</a><I, F></h3><code class="content"><span class="where fmt-newline">impl<I, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.PadUsing.html" title="struct itertools::structs::PadUsing">PadUsing</a><I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1472-1477" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that pads the sequence to a minimum length of
|
||
<code>min</code> by filling missing elements using a closure <code>f</code>.</p>
|
||
<p>Iterator element type is <code>Self::Item</code>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">5</span>).<span class="ident">pad_using</span>(<span class="number">10</span>, <span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="number">2</span><span class="kw-2">*</span><span class="ident">i</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">10</span>, <span class="number">12</span>, <span class="number">14</span>, <span class="number">16</span>, <span class="number">18</span>]);
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">10</span>).<span class="ident">pad_using</span>(<span class="number">5</span>, <span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="number">2</span><span class="kw-2">*</span><span class="ident">i</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>]);
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">5</span>).<span class="ident">pad_using</span>(<span class="number">10</span>, <span class="op">|</span><span class="ident">i</span><span class="op">|</span> <span class="number">2</span><span class="kw-2">*</span><span class="ident">i</span>).<span class="ident">rev</span>();
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="number">18</span>, <span class="number">16</span>, <span class="number">14</span>, <span class="number">12</span>, <span class="number">10</span>, <span class="number">4</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="number">0</span>]);</pre></div>
|
||
</div><h3 id="method.with_position" class="method"><code>fn <a href="#method.with_position" class="fnname">with_position</a>(self) -> <a class="struct" href="../itertools/structs/struct.WithPosition.html" title="struct itertools::structs::WithPosition">WithPosition</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.WithPosition.html" title="struct itertools::structs::WithPosition">WithPosition</a><I></h3><code class="content"><span class="where fmt-newline">impl<I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.WithPosition.html" title="struct itertools::structs::WithPosition">WithPosition</a><I></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="enum" href="../itertools/enum.Position.html" title="enum itertools::Position">Position</a><I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1498-1502" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that wraps each element in a <code>Position</code> to
|
||
ease special-case handling of the first or last elements.</p>
|
||
<p>Iterator element type is
|
||
<a href="enum.Position.html"><code>Position<Self::Item></code></a></p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::{<span class="ident">Itertools</span>, <span class="ident">Position</span>};
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">4</span>).<span class="ident">with_position</span>();
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>,
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="ident">Position</span>::<span class="ident">First</span>(<span class="number">0</span>),
|
||
<span class="ident">Position</span>::<span class="ident">Middle</span>(<span class="number">1</span>),
|
||
<span class="ident">Position</span>::<span class="ident">Middle</span>(<span class="number">2</span>),
|
||
<span class="ident">Position</span>::<span class="ident">Last</span>(<span class="number">3</span>)]);
|
||
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">1</span>).<span class="ident">with_position</span>();
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="ident">Position</span>::<span class="ident">Only</span>(<span class="number">0</span>)]);</pre></div>
|
||
</div><h3 id="method.positions" class="method"><code>fn <a href="#method.positions" class="fnname">positions</a><P>(self, predicate: P) -> <a class="struct" href="../itertools/structs/struct.Positions.html" title="struct itertools::structs::Positions">Positions</a><Self, P><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Positions.html" title="struct itertools::structs::Positions">Positions</a><I, F></h3><code class="content"><span class="where fmt-newline">impl<I, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Positions.html" title="struct itertools::structs::Positions">Positions</a><I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1517-1522" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that yields the indices of all elements
|
||
satisfying a predicate, counted from the start of the iterator.</p>
|
||
<p>Equivalent to <code>iter.enumerate().filter(|(_, v)| predicate(v)).map(|(i, _)| i)</code>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">9</span>];
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">data</span>.<span class="ident">iter</span>().<span class="ident">positions</span>(<span class="op">|</span><span class="ident">v</span><span class="op">|</span> <span class="ident">v</span> <span class="op">%</span> <span class="number">2</span> <span class="op">=</span><span class="op">=</span> <span class="number">0</span>), <span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">4</span>, <span class="number">5</span>]);
|
||
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">data</span>.<span class="ident">iter</span>().<span class="ident">positions</span>(<span class="op">|</span><span class="ident">v</span><span class="op">|</span> <span class="ident">v</span> <span class="op">%</span> <span class="number">2</span> <span class="op">=</span><span class="op">=</span> <span class="number">1</span>).<span class="ident">rev</span>(), <span class="macro">vec</span><span class="macro">!</span>[<span class="number">7</span>, <span class="number">6</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">0</span>]);</pre></div>
|
||
</div><h3 id="method.update" class="method"><code>fn <a href="#method.update" class="fnname">update</a><F>(self, updater: F) -> <a class="struct" href="../itertools/structs/struct.Update.html" title="struct itertools::structs::Update">Update</a><Self, F><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.Update.html" title="struct itertools::structs::Update">Update</a><I, F></h3><code class="content"><span class="where fmt-newline">impl<I, F> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.Update.html" title="struct itertools::structs::Update">Update</a><I, F> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&mut I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>), </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&mut Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>), </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1534-1539" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an iterator adaptor that applies a mutating function
|
||
to each element before yielding it.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">input</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>], <span class="macro">vec</span><span class="macro">!</span>[<span class="number">3</span>, <span class="number">2</span>, <span class="number">1</span>]];
|
||
<span class="kw">let</span> <span class="ident">it</span> <span class="op">=</span> <span class="ident">input</span>.<span class="ident">into_iter</span>().<span class="ident">update</span>(<span class="op">|</span><span class="kw-2">mut</span> <span class="ident">v</span><span class="op">|</span> <span class="ident">v</span>.<span class="ident">push</span>(<span class="number">0</span>));
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">it</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">0</span>], <span class="macro">vec</span><span class="macro">!</span>[<span class="number">3</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="number">0</span>]]);</pre></div>
|
||
</div><h3 id="method.next_tuple" class="method"><code>fn <a href="#method.next_tuple" class="fnname">next_tuple</a><T>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><T> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item>,<br> T: <a class="trait" href="../itertools/traits/trait.HomogeneousTuple.html" title="trait itertools::traits::HomogeneousTuple">HomogeneousTuple</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1555-1560" title="goto source code">[src]</a></h3><div class="docblock"><p>Advances the iterator and returns the next items grouped in a tuple of
|
||
a specific size (up to 12).</p>
|
||
<p>If there are enough elements to be grouped in a tuple, then the tuple is
|
||
returned inside <code>Some</code>, otherwise <code>None</code> is returned.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">iter</span> <span class="op">=</span> <span class="number">1</span>..<span class="number">5</span>;
|
||
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="prelude-val">Some</span>((<span class="number">1</span>, <span class="number">2</span>)), <span class="ident">iter</span>.<span class="ident">next_tuple</span>());</pre></div>
|
||
</div><h3 id="method.collect_tuple" class="method"><code>fn <a href="#method.collect_tuple" class="fnname">collect_tuple</a><T>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><T> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = T::Item>,<br> T: <a class="trait" href="../itertools/traits/trait.HomogeneousTuple.html" title="trait itertools::traits::HomogeneousTuple">HomogeneousTuple</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1580-1591" title="goto source code">[src]</a></h3><div class="docblock"><p>Collects all items from the iterator into a tuple of a specific size
|
||
(up to 12).</p>
|
||
<p>If the number of elements inside the iterator is <strong>exactly</strong> equal to
|
||
the tuple size, then the tuple is returned inside <code>Some</code>, otherwise
|
||
<code>None</code> is returned.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">iter</span> <span class="op">=</span> <span class="number">1</span>..<span class="number">3</span>;
|
||
|
||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>((<span class="ident">x</span>, <span class="ident">y</span>)) <span class="op">=</span> <span class="ident">iter</span>.<span class="ident">collect_tuple</span>() {
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>((<span class="ident">x</span>, <span class="ident">y</span>), (<span class="number">1</span>, <span class="number">2</span>))
|
||
} <span class="kw">else</span> {
|
||
<span class="macro">panic</span><span class="macro">!</span>(<span class="string">"Expected two elements"</span>)
|
||
}</pre></div>
|
||
</div><h3 id="method.find_position" class="method"><code>fn <a href="#method.find_position" class="fnname">find_position</a><P>(&mut self, pred: P) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>> <span class="where fmt-newline">where<br> P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1604-1615" title="goto source code">[src]</a></h3><div class="docblock"><p>Find the position and value of the first element satisfying a predicate.</p>
|
||
<p>The iterator is not advanced past the first element found.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">text</span> <span class="op">=</span> <span class="string">"Hα"</span>;
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">text</span>.<span class="ident">chars</span>().<span class="ident">find_position</span>(<span class="op">|</span><span class="ident">ch</span><span class="op">|</span> <span class="ident">ch</span>.<span class="ident">is_lowercase</span>()), <span class="prelude-val">Some</span>((<span class="number">1</span>, <span class="string">'α'</span>)));</pre></div>
|
||
</div><h3 id="method.all_equal" class="method"><code>fn <a href="#method.all_equal" class="fnname">all_equal</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1633-1641" title="goto source code">[src]</a></h3><div class="docblock"><p>Check whether all elements compare equal.</p>
|
||
<p>Empty iterators are considered to have equal elements:</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">5</span>];
|
||
<span class="macro">assert</span><span class="macro">!</span>(<span class="op">!</span><span class="ident">data</span>.<span class="ident">iter</span>().<span class="ident">all_equal</span>());
|
||
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">data</span>[<span class="number">0</span>..<span class="number">3</span>].<span class="ident">iter</span>().<span class="ident">all_equal</span>());
|
||
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">data</span>[<span class="number">3</span>..<span class="number">5</span>].<span class="ident">iter</span>().<span class="ident">all_equal</span>());
|
||
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">data</span>[<span class="number">5</span>..<span class="number">8</span>].<span class="ident">iter</span>().<span class="ident">all_equal</span>());
|
||
|
||
<span class="kw">let</span> <span class="ident">data</span> : <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span> <span class="op">=</span> <span class="prelude-val">None</span>;
|
||
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">data</span>.<span class="ident">into_iter</span>().<span class="ident">all_equal</span>());</pre></div>
|
||
</div><h3 id="method.dropping" class="method"><code>fn <a href="#method.dropping" class="fnname">dropping</a>(self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1658-1665" title="goto source code">[src]</a></h3><div class="docblock"><p>Consume the first <code>n</code> elements from the iterator eagerly,
|
||
and return the same iterator again.</p>
|
||
<p>It works similarly to <em>.skip(</em> <code>n</code> <em>)</em> except it is eager and
|
||
preserves the iterator type.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">iter</span> <span class="op">=</span> <span class="string">"αβγ"</span>.<span class="ident">chars</span>().<span class="ident">dropping</span>(<span class="number">2</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">iter</span>, <span class="string">"γ"</span>.<span class="ident">chars</span>());</pre></div>
|
||
<p><em>Fusing notes: if the iterator is exhausted by dropping,
|
||
the result of calling <code>.next()</code> again depends on the iterator implementation.</em></p>
|
||
</div><h3 id="method.dropping_back" class="method"><code>fn <a href="#method.dropping_back" class="fnname">dropping_back</a>(self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> Self <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/double_ended/trait.DoubleEndedIterator.html" title="trait core::iter::traits::double_ended::DoubleEndedIterator">DoubleEndedIterator</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1682-1690" title="goto source code">[src]</a></h3><div class="docblock"><p>Consume the last <code>n</code> elements from the iterator eagerly,
|
||
and return the same iterator again.</p>
|
||
<p>This is only possible on double ended iterators. <code>n</code> may be
|
||
larger than the number of elements.</p>
|
||
<p>Note: This method is eager, dropping the back elements immediately and
|
||
preserves the iterator type.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">init</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>, <span class="number">3</span>, <span class="number">6</span>, <span class="number">9</span>].<span class="ident">into_iter</span>().<span class="ident">dropping_back</span>(<span class="number">1</span>);
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">init</span>, <span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>, <span class="number">3</span>, <span class="number">6</span>]);</pre></div>
|
||
</div><h3 id="method.foreach" class="method"><code>fn <a href="#method.foreach" class="fnname">foreach</a><F>(self, f: F) <span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>),<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1710-1715" title="goto source code">[src]</a></h3><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 0.8.0: <p>Use .for_each() instead</p>
|
||
</div></div><div class="docblock"><p>Run the closure <code>f</code> eagerly on each element of the iterator.</p>
|
||
<p>Consumes the iterator until its end.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">mpsc</span>::<span class="ident">channel</span>;
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> (<span class="ident">tx</span>, <span class="ident">rx</span>) <span class="op">=</span> <span class="ident">channel</span>();
|
||
|
||
<span class="comment">// use .foreach() to apply a function to each value -- sending it</span>
|
||
(<span class="number">0</span>..<span class="number">5</span>).<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span> <span class="op">*</span> <span class="number">2</span> <span class="op">+</span> <span class="number">1</span>).<span class="ident">foreach</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> { <span class="ident">tx</span>.<span class="ident">send</span>(<span class="ident">x</span>).<span class="ident">unwrap</span>(); } );
|
||
|
||
<span class="ident">drop</span>(<span class="ident">tx</span>);
|
||
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">rx</span>.<span class="ident">iter</span>(), <span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">7</span>, <span class="number">9</span>]);</pre></div>
|
||
</div><h3 id="method.concat" class="method"><code>fn <a href="#method.concat" class="fnname">concat</a>(self) -> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a><<Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" title="type core::iter::traits::collect::IntoIterator::Item">Item</a>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1730-1735" title="goto source code">[src]</a></h3><div class="docblock"><p>Combine all an iterator's elements into one element by using <code>Extend</code>.</p>
|
||
<p>This combinator will extend the first item with each of the rest of the
|
||
items of the iterator. If the iterator is empty, the default value of
|
||
<code>I::Item</code> is returned.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">input</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>], <span class="macro">vec</span><span class="macro">!</span>[<span class="number">2</span>, <span class="number">3</span>], <span class="macro">vec</span><span class="macro">!</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">input</span>.<span class="ident">into_iter</span>().<span class="ident">concat</span>(),
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);</pre></div>
|
||
</div><h3 id="method.collect_vec" class="method"><code>fn <a href="#method.collect_vec" class="fnname">collect_vec</a>(self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1740-1744" title="goto source code">[src]</a></h3><div class="docblock"><p><code>.collect_vec()</code> is simply a type specialization of <code>.collect()</code>,
|
||
for convenience.</p>
|
||
</div><h3 id="method.try_collect" class="method"><code>fn <a href="#method.try_collect" class="fnname">try_collect</a><T, U, E>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, E> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>>,<br> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, E>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html" title="trait core::iter::traits::collect::FromIterator">FromIterator</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, E>>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1767-1773" title="goto source code">[src]</a></h3><div class="docblock"><p><code>.try_collect()</code> is more convenient way of writing
|
||
<code>.collect::<Result<_, _>>()</code></p>
|
||
<h1 id="example" class="section-header"><a href="#example">Example</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">std</span>::{<span class="ident">fs</span>, <span class="ident">io</span>};
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">fn</span> <span class="ident">process_dir_entries</span>(<span class="ident">entries</span>: <span class="kw-2">&</span>[<span class="ident">fs</span>::<span class="ident">DirEntry</span>]) {
|
||
<span class="comment">// ...</span>
|
||
}
|
||
|
||
<span class="kw">fn</span> <span class="ident">do_stuff</span>() <span class="op">-</span><span class="op">></span> <span class="ident">std</span>::<span class="ident">io</span>::<span class="prelude-ty">Result</span><span class="op"><</span>()<span class="op">></span> {
|
||
<span class="kw">let</span> <span class="ident">entries</span>: <span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span> <span class="op">=</span> <span class="ident">fs</span>::<span class="ident">read_dir</span>(<span class="string">"."</span>)<span class="question-mark">?</span>.<span class="ident">try_collect</span>()<span class="question-mark">?</span>;
|
||
<span class="ident">process_dir_entries</span>(<span class="kw-2">&</span><span class="ident">entries</span>);
|
||
|
||
<span class="prelude-val">Ok</span>(())
|
||
}</pre></div>
|
||
</div><h3 id="method.set_from" class="method"><code>fn <a href="#method.set_from" class="fnname">set_from</a><'a, A: 'a, J>(&mut self, from: J) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut </a>A>,<br> J: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = A>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1791-1804" title="goto source code">[src]</a></h3><div class="docblock"><p>Assign to each reference in <code>self</code> from the <code>from</code> iterator,
|
||
stopping at the shortest of the two iterators.</p>
|
||
<p>The <code>from</code> iterator is queried for its next element before the <code>self</code>
|
||
iterator, and if either is exhausted the method is done.</p>
|
||
<p>Return the number of elements written.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">xs</span> <span class="op">=</span> [<span class="number">0</span>; <span class="number">4</span>];
|
||
<span class="ident">xs</span>.<span class="ident">iter_mut</span>().<span class="ident">set_from</span>(<span class="number">1</span>..);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">xs</span>, [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]);</pre></div>
|
||
</div><h3 id="method.join" class="method"><code>fn <a href="#method.join" class="fnname">join</a>(&mut self, sep: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a> <span class="where fmt-newline">where<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1817-1834" title="goto source code">[src]</a></h3><div class="docblock"><p>Combine all iterator elements into one String, separated by <code>sep</code>.</p>
|
||
<p>Use the <code>Display</code> implementation of each element.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>([<span class="string">"a"</span>, <span class="string">"b"</span>, <span class="string">"c"</span>].<span class="ident">iter</span>().<span class="ident">join</span>(<span class="string">", "</span>), <span class="string">"a, b, c"</span>);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>([<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>].<span class="ident">iter</span>().<span class="ident">join</span>(<span class="string">", "</span>), <span class="string">"1, 2, 3"</span>);</pre></div>
|
||
</div><h3 id="method.format" class="method"><code>fn <a href="#method.format" class="fnname">format</a>(self, sep: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="../itertools/structs/struct.Format.html" title="struct itertools::structs::Format">Format</a><'_, Self> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1851-1855" title="goto source code">[src]</a></h3><div class="docblock"><p>Format all iterator elements, separated by <code>sep</code>.</p>
|
||
<p>All elements are formatted (any formatting trait)
|
||
with <code>sep</code> inserted between each element.</p>
|
||
<p><strong>Panics</strong> if the formatter helper is formatted more than once.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> [<span class="number">1.1</span>, <span class="number">2.71828</span>, <span class="op">-</span><span class="number">3.</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(
|
||
<span class="macro">format</span><span class="macro">!</span>(<span class="string">"{:.2}"</span>, <span class="ident">data</span>.<span class="ident">iter</span>().<span class="ident">format</span>(<span class="string">", "</span>)),
|
||
<span class="string">"1.10, 2.72, -3.00"</span>);</pre></div>
|
||
</div><h3 id="method.format_with" class="method"><code>fn <a href="#method.format_with" class="fnname">format_with</a><F>(self, sep: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, format: F) -> <a class="struct" href="../itertools/structs/struct.FormatWith.html" title="struct itertools::structs::FormatWith">FormatWith</a><'_, Self, F> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &mut dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1889-1894" title="goto source code">[src]</a></h3><div class="docblock"><p>Format all iterator elements, separated by <code>sep</code>.</p>
|
||
<p>This is a customizable version of <code>.format()</code>.</p>
|
||
<p>The supplied closure <code>format</code> is called once per iterator element,
|
||
with two arguments: the element and a callback that takes a
|
||
<code>&Display</code> value, i.e. any reference to type that implements <code>Display</code>.</p>
|
||
<p>Using <code>&format_args!(...)</code> is the most versatile way to apply custom
|
||
element formatting. The callback can be called multiple times if needed.</p>
|
||
<p><strong>Panics</strong> if the formatter helper is formatted more than once.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> [<span class="number">1.1</span>, <span class="number">2.71828</span>, <span class="op">-</span><span class="number">3.</span>];
|
||
<span class="kw">let</span> <span class="ident">data_formatter</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">iter</span>().<span class="ident">format_with</span>(<span class="string">", "</span>, <span class="op">|</span><span class="ident">elt</span>, <span class="ident">f</span><span class="op">|</span> <span class="ident">f</span>(<span class="kw-2">&</span><span class="macro">format_args</span><span class="macro">!</span>(<span class="string">"{:.2}"</span>, <span class="ident">elt</span>)));
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="macro">format</span><span class="macro">!</span>(<span class="string">"{}"</span>, <span class="ident">data_formatter</span>),
|
||
<span class="string">"1.10, 2.72, -3.00"</span>);
|
||
|
||
<span class="comment">// .format_with() is recursively composable</span>
|
||
<span class="kw">let</span> <span class="ident">matrix</span> <span class="op">=</span> [[<span class="number">1.</span>, <span class="number">2.</span>, <span class="number">3.</span>],
|
||
[<span class="number">4.</span>, <span class="number">5.</span>, <span class="number">6.</span>]];
|
||
<span class="kw">let</span> <span class="ident">matrix_formatter</span> <span class="op">=</span> <span class="ident">matrix</span>.<span class="ident">iter</span>().<span class="ident">format_with</span>(<span class="string">"\n"</span>, <span class="op">|</span><span class="ident">row</span>, <span class="ident">f</span><span class="op">|</span> {
|
||
<span class="ident">f</span>(<span class="kw-2">&</span><span class="ident">row</span>.<span class="ident">iter</span>().<span class="ident">format_with</span>(<span class="string">", "</span>, <span class="op">|</span><span class="ident">elt</span>, <span class="ident">g</span><span class="op">|</span> <span class="ident">g</span>(<span class="kw-2">&</span><span class="ident">elt</span>)))
|
||
});
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="macro">format</span><span class="macro">!</span>(<span class="string">"{}"</span>, <span class="ident">matrix_formatter</span>),
|
||
<span class="string">"1, 2, 3\n4, 5, 6"</span>);
|
||
|
||
</pre></div>
|
||
</div><h3 id="method.fold_results" class="method"><code>fn <a href="#method.fold_results" class="fnname">fold_results</a><A, E, B, F>(&mut self, start: B, f: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><B, E> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><A, E>>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, A) -> B, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1898-1903" title="goto source code">[src]</a></h3><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated since 0.10.0: <p>Use .fold_ok() instead</p>
|
||
</div></div><div class="docblock"><p>See <a href="#method.fold_ok"><code>.fold_ok()</code></a>.</p>
|
||
</div><h3 id="method.fold_ok" class="method"><code>fn <a href="#method.fold_ok" class="fnname">fold_ok</a><A, E, B, F>(&mut self, start: B, f: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><B, E> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><A, E>>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, A) -> B, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1947-1958" title="goto source code">[src]</a></h3><div class="docblock"><p>Fold <code>Result</code> values from an iterator.</p>
|
||
<p>Only <code>Ok</code> values are folded. If no error is encountered, the folded
|
||
value is returned inside <code>Ok</code>. Otherwise, the operation terminates
|
||
and returns the first <code>Err</code> value it encounters. No iterator elements are
|
||
consumed after the first error.</p>
|
||
<p>The first accumulator value is the <code>start</code> parameter.
|
||
Each iteration passes the accumulator value and the next value inside <code>Ok</code>
|
||
to the fold function <code>f</code> and its return value becomes the new accumulator value.</p>
|
||
<p>For example the sequence <em>Ok(1), Ok(2), Ok(3)</em> will result in a
|
||
computation like this:</p>
|
||
|
||
<div class='information'><div class='tooltip ignore'>ⓘ</div></div><div class="example-wrap"><pre class="rust rust-example-rendered ignore">
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">accum</span> <span class="op">=</span> <span class="ident">start</span>;
|
||
<span class="ident">accum</span> <span class="op">=</span> <span class="ident">f</span>(<span class="ident">accum</span>, <span class="number">1</span>);
|
||
<span class="ident">accum</span> <span class="op">=</span> <span class="ident">f</span>(<span class="ident">accum</span>, <span class="number">2</span>);
|
||
<span class="ident">accum</span> <span class="op">=</span> <span class="ident">f</span>(<span class="ident">accum</span>, <span class="number">3</span>);</pre></div>
|
||
<p>With a <code>start</code> value of 0 and an addition as folding function,
|
||
this effectively results in <em>((0 + 1) + 2) + 3</em></p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">ops</span>::<span class="ident">Add</span>;
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">values</span> <span class="op">=</span> [<span class="number">1</span>, <span class="number">2</span>, <span class="op">-</span><span class="number">2</span>, <span class="op">-</span><span class="number">1</span>, <span class="number">2</span>, <span class="number">1</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(
|
||
<span class="ident">values</span>.<span class="ident">iter</span>()
|
||
.<span class="ident">map</span>(<span class="prelude-val">Ok</span>::<span class="op"><</span><span class="kw">_</span>, ()<span class="op">></span>)
|
||
.<span class="ident">fold_ok</span>(<span class="number">0</span>, <span class="ident">Add</span>::<span class="ident">add</span>),
|
||
<span class="prelude-val">Ok</span>(<span class="number">3</span>)
|
||
);
|
||
<span class="macro">assert</span><span class="macro">!</span>(
|
||
<span class="ident">values</span>.<span class="ident">iter</span>()
|
||
.<span class="ident">map</span>(<span class="op">|</span><span class="kw-2">&</span><span class="ident">x</span><span class="op">|</span> <span class="kw">if</span> <span class="ident">x</span> <span class="op">></span><span class="op">=</span> <span class="number">0</span> { <span class="prelude-val">Ok</span>(<span class="ident">x</span>) } <span class="kw">else</span> { <span class="prelude-val">Err</span>(<span class="string">"Negative number"</span>) })
|
||
.<span class="ident">fold_ok</span>(<span class="number">0</span>, <span class="ident">Add</span>::<span class="ident">add</span>)
|
||
.<span class="ident">is_err</span>()
|
||
);</pre></div>
|
||
</div><h3 id="method.fold_options" class="method"><code>fn <a href="#method.fold_options" class="fnname">fold_options</a><A, B, F>(&mut self, start: B, f: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><B> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><A>>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, A) -> B, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#1979-1990" title="goto source code">[src]</a></h3><div class="docblock"><p>Fold <code>Option</code> values from an iterator.</p>
|
||
<p>Only <code>Some</code> values are folded. If no <code>None</code> is encountered, the folded
|
||
value is returned inside <code>Some</code>. Otherwise, the operation terminates
|
||
and returns <code>None</code>. No iterator elements are consumed after the <code>None</code>.</p>
|
||
<p>This is the <code>Option</code> equivalent to <code>fold_ok</code>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">ops</span>::<span class="ident">Add</span>;
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">values</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="prelude-val">Some</span>(<span class="number">1</span>), <span class="prelude-val">Some</span>(<span class="number">2</span>), <span class="prelude-val">Some</span>(<span class="op">-</span><span class="number">2</span>)].<span class="ident">into_iter</span>();
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">values</span>.<span class="ident">fold_options</span>(<span class="number">5</span>, <span class="ident">Add</span>::<span class="ident">add</span>), <span class="prelude-val">Some</span>(<span class="number">5</span> <span class="op">+</span> <span class="number">1</span> <span class="op">+</span> <span class="number">2</span> <span class="op">-</span> <span class="number">2</span>));
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">more_values</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="prelude-val">Some</span>(<span class="number">2</span>), <span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="number">0</span>)].<span class="ident">into_iter</span>();
|
||
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">more_values</span>.<span class="ident">fold_options</span>(<span class="number">0</span>, <span class="ident">Add</span>::<span class="ident">add</span>).<span class="ident">is_none</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">more_values</span>.<span class="ident">next</span>().<span class="ident">unwrap</span>(), <span class="prelude-val">Some</span>(<span class="number">0</span>));</pre></div>
|
||
</div><h3 id="method.fold1" class="method"><code>fn <a href="#method.fold1" class="fnname">fold1</a><F>(self, f: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>> <span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2004-2009" title="goto source code">[src]</a></h3><div class="docblock"><p>Accumulator of the elements in the iterator.</p>
|
||
<p>Like <code>.fold()</code>, without a base case. If the iterator is
|
||
empty, return <code>None</code>. With just one element, return it.
|
||
Otherwise elements are accumulated in sequence using the closure <code>f</code>.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>((<span class="number">0</span>..<span class="number">10</span>).<span class="ident">fold1</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span> <span class="op">+</span> <span class="ident">y</span>).<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="number">45</span>);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>((<span class="number">0</span>..<span class="number">0</span>).<span class="ident">fold1</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span> <span class="op">*</span> <span class="ident">y</span>), <span class="prelude-val">None</span>);</pre></div>
|
||
</div><h3 id="method.tree_fold1" class="method"><code>fn <a href="#method.tree_fold1" class="fnname">tree_fold1</a><F>(self, f: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>> <span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>,<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2059-2116" title="goto source code">[src]</a></h3><div class="docblock"><p>Accumulate the elements in the iterator in a tree-like manner.</p>
|
||
<p>You can think of it as, while there's more than one item, repeatedly
|
||
combining adjacent items. It does so in bottom-up-merge-sort order,
|
||
however, so that it needs only logarithmic stack space.</p>
|
||
<p>This produces a call tree like the following (where the calls under
|
||
an item are done after reading that item):</p>
|
||
<pre><code class="language-text">1 2 3 4 5 6 7
|
||
│ │ │ │ │ │ │
|
||
└─f └─f └─f │
|
||
│ │ │ │
|
||
└───f └─f
|
||
│ │
|
||
└─────f
|
||
</code></pre>
|
||
<p>Which, for non-associative functions, will typically produce a different
|
||
result than the linear call tree used by <code>fold1</code>:</p>
|
||
<pre><code class="language-text">1 2 3 4 5 6 7
|
||
│ │ │ │ │ │ │
|
||
└─f─f─f─f─f─f
|
||
</code></pre>
|
||
<p>If <code>f</code> is associative, prefer the normal <code>fold1</code> instead.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="comment">// The same tree as above</span>
|
||
<span class="kw">let</span> <span class="ident">num_strings</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">8</span>).<span class="ident">map</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">to_string</span>());
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">num_strings</span>.<span class="ident">tree_fold1</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="macro">format</span><span class="macro">!</span>(<span class="string">"f({}, {})"</span>, <span class="ident">x</span>, <span class="ident">y</span>)),
|
||
<span class="prelude-val">Some</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">"f(f(f(1, 2), f(3, 4)), f(f(5, 6), 7))"</span>)));
|
||
|
||
<span class="comment">// Like fold1, an empty iterator produces None</span>
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>((<span class="number">0</span>..<span class="number">0</span>).<span class="ident">tree_fold1</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span> <span class="op">*</span> <span class="ident">y</span>), <span class="prelude-val">None</span>);
|
||
|
||
<span class="comment">// tree_fold1 matches fold1 for associative operations...</span>
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>((<span class="number">0</span>..<span class="number">10</span>).<span class="ident">tree_fold1</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span> <span class="op">+</span> <span class="ident">y</span>),
|
||
(<span class="number">0</span>..<span class="number">10</span>).<span class="ident">fold1</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span> <span class="op">+</span> <span class="ident">y</span>));
|
||
<span class="comment">// ...but not for non-associative ones</span>
|
||
<span class="macro">assert_ne</span><span class="macro">!</span>((<span class="number">0</span>..<span class="number">10</span>).<span class="ident">tree_fold1</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span> <span class="op">-</span> <span class="ident">y</span>),
|
||
(<span class="number">0</span>..<span class="number">10</span>).<span class="ident">fold1</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span> <span class="op">-</span> <span class="ident">y</span>));</pre></div>
|
||
</div><h3 id="method.fold_while" class="method"><code>fn <a href="#method.fold_while" class="fnname">fold_while</a><B, F>(&mut self, init: B, f: F) -> <a class="enum" href="../itertools/enum.FoldWhile.html" title="enum itertools::FoldWhile">FoldWhile</a><B> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="../itertools/enum.FoldWhile.html" title="enum itertools::FoldWhile">FoldWhile</a><B>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2157-2177" title="goto source code">[src]</a></h3><div class="docblock"><p>An iterator method that applies a function, producing a single, final value.</p>
|
||
<p><code>fold_while()</code> is basically equivalent to <code>fold()</code> but with additional support for
|
||
early exit via short-circuiting.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">FoldWhile</span>::{<span class="ident">Continue</span>, <span class="ident">Done</span>};
|
||
|
||
<span class="kw">let</span> <span class="ident">numbers</span> <span class="op">=</span> [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>];
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">result</span> <span class="op">=</span> <span class="number">0</span>;
|
||
|
||
<span class="comment">// for loop:</span>
|
||
<span class="kw">for</span> <span class="ident">i</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">numbers</span> {
|
||
<span class="kw">if</span> <span class="kw-2">*</span><span class="ident">i</span> <span class="op">></span> <span class="number">5</span> {
|
||
<span class="kw">break</span>;
|
||
}
|
||
<span class="ident">result</span> <span class="op">=</span> <span class="ident">result</span> <span class="op">+</span> <span class="ident">i</span>;
|
||
}
|
||
|
||
<span class="comment">// fold:</span>
|
||
<span class="kw">let</span> <span class="ident">result2</span> <span class="op">=</span> <span class="ident">numbers</span>.<span class="ident">iter</span>().<span class="ident">fold</span>(<span class="number">0</span>, <span class="op">|</span><span class="ident">acc</span>, <span class="ident">x</span><span class="op">|</span> {
|
||
<span class="kw">if</span> <span class="kw-2">*</span><span class="ident">x</span> <span class="op">></span> <span class="number">5</span> { <span class="ident">acc</span> } <span class="kw">else</span> { <span class="ident">acc</span> <span class="op">+</span> <span class="ident">x</span> }
|
||
});
|
||
|
||
<span class="comment">// fold_while:</span>
|
||
<span class="kw">let</span> <span class="ident">result3</span> <span class="op">=</span> <span class="ident">numbers</span>.<span class="ident">iter</span>().<span class="ident">fold_while</span>(<span class="number">0</span>, <span class="op">|</span><span class="ident">acc</span>, <span class="ident">x</span><span class="op">|</span> {
|
||
<span class="kw">if</span> <span class="kw-2">*</span><span class="ident">x</span> <span class="op">></span> <span class="number">5</span> { <span class="ident">Done</span>(<span class="ident">acc</span>) } <span class="kw">else</span> { <span class="ident">Continue</span>(<span class="ident">acc</span> <span class="op">+</span> <span class="ident">x</span>) }
|
||
}).<span class="ident">into_inner</span>();
|
||
|
||
<span class="comment">// they're the same</span>
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">result</span>, <span class="ident">result2</span>);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">result2</span>, <span class="ident">result3</span>);</pre></div>
|
||
<p>The big difference between the computations of <code>result2</code> and <code>result3</code> is that while
|
||
<code>fold()</code> called the provided closure for every item of the callee iterator,
|
||
<code>fold_while()</code> actually stopped iterating as soon as it encountered <code>Fold::Done(_)</code>.</p>
|
||
</div><h3 id="method.sum1" class="method"><code>fn <a href="#method.sum1" class="fnname">sum1</a><S>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><S> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html" title="trait core::iter::traits::accum::Sum">Sum</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2200-2206" title="goto source code">[src]</a></h3><div class="docblock"><p>Iterate over the entire iterator and add all the elements.</p>
|
||
<p>An empty iterator returns <code>None</code>, otherwise <code>Some(sum)</code>.</p>
|
||
<h1 id="panics" class="section-header"><a href="#panics">Panics</a></h1>
|
||
<p>When calling <code>sum1()</code> and a primitive integer type is being returned, this
|
||
method will panic if the computation overflows and debug assertions are
|
||
enabled.</p>
|
||
<h1 id="examples" class="section-header"><a href="#examples">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">empty_sum</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">1</span>).<span class="ident">sum1</span>::<span class="op"><</span><span class="ident">i32</span><span class="op">></span>();
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">empty_sum</span>, <span class="prelude-val">None</span>);
|
||
|
||
<span class="kw">let</span> <span class="ident">nonempty_sum</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">11</span>).<span class="ident">sum1</span>::<span class="op"><</span><span class="ident">i32</span><span class="op">></span>();
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">nonempty_sum</span>, <span class="prelude-val">Some</span>(<span class="number">55</span>));</pre></div>
|
||
</div><h3 id="method.product1" class="method"><code>fn <a href="#method.product1" class="fnname">product1</a><P>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><P> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html" title="trait core::iter::traits::accum::Product">Product</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2228-2234" title="goto source code">[src]</a></h3><div class="docblock"><p>Iterate over the entire iterator and multiply all the elements.</p>
|
||
<p>An empty iterator returns <code>None</code>, otherwise <code>Some(product)</code>.</p>
|
||
<h1 id="panics-1" class="section-header"><a href="#panics-1">Panics</a></h1>
|
||
<p>When calling <code>product1()</code> and a primitive integer type is being returned,
|
||
method will panic if the computation overflows and debug assertions are
|
||
enabled.</p>
|
||
<h1 id="examples-1" class="section-header"><a href="#examples-1">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">empty_product</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">1</span>).<span class="ident">product1</span>::<span class="op"><</span><span class="ident">i32</span><span class="op">></span>();
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">empty_product</span>, <span class="prelude-val">None</span>);
|
||
|
||
<span class="kw">let</span> <span class="ident">nonempty_product</span> <span class="op">=</span> (<span class="number">1</span>..<span class="number">11</span>).<span class="ident">product1</span>::<span class="op"><</span><span class="ident">i32</span><span class="op">></span>();
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">nonempty_product</span>, <span class="prelude-val">Some</span>(<span class="number">3628800</span>));</pre></div>
|
||
</div><h3 id="method.sorted_unstable" class="method"><code>fn <a href="#method.sorted_unstable" class="fnname">sorted_unstable</a>(self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html" title="struct alloc::vec::into_iter::IntoIter">IntoIter</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2254-2263" title="goto source code">[src]</a></h3><div class="docblock"><p>Sort all iterator elements into a new iterator in ascending order.</p>
|
||
<p><strong>Note:</strong> This consumes the entire iterator, uses the
|
||
<code>slice::sort_unstable()</code> method and returns the result as a new
|
||
iterator that owns its elements.</p>
|
||
<p>The sorted iterator, if directly collected to a <code>Vec</code>, is converted
|
||
without any extra copying or allocation cost.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="comment">// sort the letters of the text in ascending order</span>
|
||
<span class="kw">let</span> <span class="ident">text</span> <span class="op">=</span> <span class="string">"bdacfe"</span>;
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">text</span>.<span class="ident">chars</span>().<span class="ident">sorted_unstable</span>(),
|
||
<span class="string">"abcdef"</span>.<span class="ident">chars</span>());</pre></div>
|
||
</div><h3 id="method.sorted_unstable_by" class="method"><code>fn <a href="#method.sorted_unstable_by" class="fnname">sorted_unstable_by</a><F>(self, cmp: F) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html" title="struct alloc::vec::into_iter::IntoIter">IntoIter</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2289-2296" title="goto source code">[src]</a></h3><div class="docblock"><p>Sort all iterator elements into a new iterator in ascending order.</p>
|
||
<p><strong>Note:</strong> This consumes the entire iterator, uses the
|
||
<code>slice::sort_unstable_by()</code> method and returns the result as a new
|
||
iterator that owns its elements.</p>
|
||
<p>The sorted iterator, if directly collected to a <code>Vec</code>, is converted
|
||
without any extra copying or allocation cost.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="comment">// sort people in descending order by age</span>
|
||
<span class="kw">let</span> <span class="ident">people</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[(<span class="string">"Jane"</span>, <span class="number">20</span>), (<span class="string">"John"</span>, <span class="number">18</span>), (<span class="string">"Jill"</span>, <span class="number">30</span>), (<span class="string">"Jack"</span>, <span class="number">27</span>)];
|
||
|
||
<span class="kw">let</span> <span class="ident">oldest_people_first</span> <span class="op">=</span> <span class="ident">people</span>
|
||
.<span class="ident">into_iter</span>()
|
||
.<span class="ident">sorted_unstable_by</span>(<span class="op">|</span><span class="ident">a</span>, <span class="ident">b</span><span class="op">|</span> <span class="ident">Ord</span>::<span class="ident">cmp</span>(<span class="kw-2">&</span><span class="ident">b</span>.<span class="number">1</span>, <span class="kw-2">&</span><span class="ident">a</span>.<span class="number">1</span>))
|
||
.<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">person</span>, <span class="ident">_age</span>)<span class="op">|</span> <span class="ident">person</span>);
|
||
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">oldest_people_first</span>,
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="string">"Jill"</span>, <span class="string">"Jack"</span>, <span class="string">"Jane"</span>, <span class="string">"John"</span>]);</pre></div>
|
||
</div><h3 id="method.sorted_unstable_by_key" class="method"><code>fn <a href="#method.sorted_unstable_by_key" class="fnname">sorted_unstable_by_key</a><K, F>(self, f: F) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html" title="struct alloc::vec::into_iter::IntoIter">IntoIter</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2322-2330" title="goto source code">[src]</a></h3><div class="docblock"><p>Sort all iterator elements into a new iterator in ascending order.</p>
|
||
<p><strong>Note:</strong> This consumes the entire iterator, uses the
|
||
<code>slice::sort_unstable_by_key()</code> method and returns the result as a new
|
||
iterator that owns its elements.</p>
|
||
<p>The sorted iterator, if directly collected to a <code>Vec</code>, is converted
|
||
without any extra copying or allocation cost.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="comment">// sort people in descending order by age</span>
|
||
<span class="kw">let</span> <span class="ident">people</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[(<span class="string">"Jane"</span>, <span class="number">20</span>), (<span class="string">"John"</span>, <span class="number">18</span>), (<span class="string">"Jill"</span>, <span class="number">30</span>), (<span class="string">"Jack"</span>, <span class="number">27</span>)];
|
||
|
||
<span class="kw">let</span> <span class="ident">oldest_people_first</span> <span class="op">=</span> <span class="ident">people</span>
|
||
.<span class="ident">into_iter</span>()
|
||
.<span class="ident">sorted_unstable_by_key</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="op">-</span><span class="ident">x</span>.<span class="number">1</span>)
|
||
.<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">person</span>, <span class="ident">_age</span>)<span class="op">|</span> <span class="ident">person</span>);
|
||
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">oldest_people_first</span>,
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="string">"Jill"</span>, <span class="string">"Jack"</span>, <span class="string">"Jane"</span>, <span class="string">"John"</span>]);</pre></div>
|
||
</div><h3 id="method.sorted" class="method"><code>fn <a href="#method.sorted" class="fnname">sorted</a>(self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html" title="struct alloc::vec::into_iter::IntoIter">IntoIter</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2350-2359" title="goto source code">[src]</a></h3><div class="docblock"><p>Sort all iterator elements into a new iterator in ascending order.</p>
|
||
<p><strong>Note:</strong> This consumes the entire iterator, uses the
|
||
<code>slice::sort()</code> method and returns the result as a new
|
||
iterator that owns its elements.</p>
|
||
<p>The sorted iterator, if directly collected to a <code>Vec</code>, is converted
|
||
without any extra copying or allocation cost.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="comment">// sort the letters of the text in ascending order</span>
|
||
<span class="kw">let</span> <span class="ident">text</span> <span class="op">=</span> <span class="string">"bdacfe"</span>;
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">text</span>.<span class="ident">chars</span>().<span class="ident">sorted</span>(),
|
||
<span class="string">"abcdef"</span>.<span class="ident">chars</span>());</pre></div>
|
||
</div><h3 id="method.sorted_by" class="method"><code>fn <a href="#method.sorted_by" class="fnname">sorted_by</a><F>(self, cmp: F) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html" title="struct alloc::vec::into_iter::IntoIter">IntoIter</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2385-2392" title="goto source code">[src]</a></h3><div class="docblock"><p>Sort all iterator elements into a new iterator in ascending order.</p>
|
||
<p><strong>Note:</strong> This consumes the entire iterator, uses the
|
||
<code>slice::sort_by()</code> method and returns the result as a new
|
||
iterator that owns its elements.</p>
|
||
<p>The sorted iterator, if directly collected to a <code>Vec</code>, is converted
|
||
without any extra copying or allocation cost.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="comment">// sort people in descending order by age</span>
|
||
<span class="kw">let</span> <span class="ident">people</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[(<span class="string">"Jane"</span>, <span class="number">20</span>), (<span class="string">"John"</span>, <span class="number">18</span>), (<span class="string">"Jill"</span>, <span class="number">30</span>), (<span class="string">"Jack"</span>, <span class="number">27</span>)];
|
||
|
||
<span class="kw">let</span> <span class="ident">oldest_people_first</span> <span class="op">=</span> <span class="ident">people</span>
|
||
.<span class="ident">into_iter</span>()
|
||
.<span class="ident">sorted_by</span>(<span class="op">|</span><span class="ident">a</span>, <span class="ident">b</span><span class="op">|</span> <span class="ident">Ord</span>::<span class="ident">cmp</span>(<span class="kw-2">&</span><span class="ident">b</span>.<span class="number">1</span>, <span class="kw-2">&</span><span class="ident">a</span>.<span class="number">1</span>))
|
||
.<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">person</span>, <span class="ident">_age</span>)<span class="op">|</span> <span class="ident">person</span>);
|
||
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">oldest_people_first</span>,
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="string">"Jill"</span>, <span class="string">"Jack"</span>, <span class="string">"Jane"</span>, <span class="string">"John"</span>]);</pre></div>
|
||
</div><h3 id="method.sorted_by_key" class="method"><code>fn <a href="#method.sorted_by_key" class="fnname">sorted_by_key</a><K, F>(self, f: F) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html" title="struct alloc::vec::into_iter::IntoIter">IntoIter</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2418-2426" title="goto source code">[src]</a></h3><div class="docblock"><p>Sort all iterator elements into a new iterator in ascending order.</p>
|
||
<p><strong>Note:</strong> This consumes the entire iterator, uses the
|
||
<code>slice::sort_by_key()</code> method and returns the result as a new
|
||
iterator that owns its elements.</p>
|
||
<p>The sorted iterator, if directly collected to a <code>Vec</code>, is converted
|
||
without any extra copying or allocation cost.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="comment">// sort people in descending order by age</span>
|
||
<span class="kw">let</span> <span class="ident">people</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[(<span class="string">"Jane"</span>, <span class="number">20</span>), (<span class="string">"John"</span>, <span class="number">18</span>), (<span class="string">"Jill"</span>, <span class="number">30</span>), (<span class="string">"Jack"</span>, <span class="number">27</span>)];
|
||
|
||
<span class="kw">let</span> <span class="ident">oldest_people_first</span> <span class="op">=</span> <span class="ident">people</span>
|
||
.<span class="ident">into_iter</span>()
|
||
.<span class="ident">sorted_by_key</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="op">-</span><span class="ident">x</span>.<span class="number">1</span>)
|
||
.<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">person</span>, <span class="ident">_age</span>)<span class="op">|</span> <span class="ident">person</span>);
|
||
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">oldest_people_first</span>,
|
||
<span class="macro">vec</span><span class="macro">!</span>[<span class="string">"Jill"</span>, <span class="string">"Jack"</span>, <span class="string">"Jane"</span>, <span class="string">"John"</span>]);</pre></div>
|
||
</div><h3 id="method.k_smallest" class="method"><code>fn <a href="#method.k_smallest" class="fnname">k_smallest</a>(self, k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/into_iter/struct.IntoIter.html" title="struct alloc::vec::into_iter::IntoIter">IntoIter</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2456-2463" title="goto source code">[src]</a></h3><div class="docblock"><p>Sort the k smallest elements into a new iterator, in ascending order.</p>
|
||
<p><strong>Note:</strong> This consumes the entire iterator, and returns the result
|
||
as a new iterator that owns its elements. If the input contains
|
||
less than k elements, the result is equivalent to <code>self.sorted()</code>.</p>
|
||
<p>This is guaranteed to use <code>k * sizeof(Self::Item) + O(1)</code> memory
|
||
and <code>O(n log k)</code> time, with <code>n</code> the number of elements in the input.</p>
|
||
<p>The sorted iterator, if directly collected to a <code>Vec</code>, is converted
|
||
without any extra copying or allocation cost.</p>
|
||
<p><strong>Note:</strong> This is functionally-equivalent to <code>self.sorted().take(k)</code>
|
||
but much more efficient.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="comment">// A random permutation of 0..15</span>
|
||
<span class="kw">let</span> <span class="ident">numbers</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">6</span>, <span class="number">9</span>, <span class="number">1</span>, <span class="number">14</span>, <span class="number">0</span>, <span class="number">4</span>, <span class="number">8</span>, <span class="number">7</span>, <span class="number">11</span>, <span class="number">2</span>, <span class="number">10</span>, <span class="number">3</span>, <span class="number">13</span>, <span class="number">12</span>, <span class="number">5</span>];
|
||
|
||
<span class="kw">let</span> <span class="ident">five_smallest</span> <span class="op">=</span> <span class="ident">numbers</span>
|
||
.<span class="ident">into_iter</span>()
|
||
.<span class="ident">k_smallest</span>(<span class="number">5</span>);
|
||
|
||
<span class="ident">itertools</span>::<span class="ident">assert_equal</span>(<span class="ident">five_smallest</span>, <span class="number">0</span>..<span class="number">5</span>);</pre></div>
|
||
</div><h3 id="method.partition_map" class="method"><code>fn <a href="#method.partition_map" class="fnname">partition_map</a><A, B, F, L, R>(self, predicate: F) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>A, B<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="../itertools/enum.Either.html" title="enum itertools::Either">Either</a><L, R>,<br> A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a><L>,<br> B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a><R>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2486-2501" title="goto source code">[src]</a></h3><div class="docblock"><p>Collect all iterator elements into one of two
|
||
partitions. Unlike <code>Iterator::partition</code>, each partition may
|
||
have a distinct type.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::{<span class="ident">Itertools</span>, <span class="ident">Either</span>};
|
||
|
||
<span class="kw">let</span> <span class="ident">successes_and_failures</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="prelude-val">Ok</span>(<span class="number">1</span>), <span class="prelude-val">Err</span>(<span class="bool-val">false</span>), <span class="prelude-val">Err</span>(<span class="bool-val">true</span>), <span class="prelude-val">Ok</span>(<span class="number">2</span>)];
|
||
|
||
<span class="kw">let</span> (<span class="ident">successes</span>, <span class="ident">failures</span>): (<span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>, <span class="ident">Vec</span><span class="op"><</span><span class="kw">_</span><span class="op">></span>) <span class="op">=</span> <span class="ident">successes_and_failures</span>
|
||
.<span class="ident">into_iter</span>()
|
||
.<span class="ident">partition_map</span>(<span class="op">|</span><span class="ident">r</span><span class="op">|</span> {
|
||
<span class="kw">match</span> <span class="ident">r</span> {
|
||
<span class="prelude-val">Ok</span>(<span class="ident">v</span>) <span class="op">=</span><span class="op">></span> <span class="ident">Either</span>::<span class="ident">Left</span>(<span class="ident">v</span>),
|
||
<span class="prelude-val">Err</span>(<span class="ident">v</span>) <span class="op">=</span><span class="op">></span> <span class="ident">Either</span>::<span class="ident">Right</span>(<span class="ident">v</span>),
|
||
}
|
||
});
|
||
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">successes</span>, [<span class="number">1</span>, <span class="number">2</span>]);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">failures</span>, [<span class="bool-val">false</span>, <span class="bool-val">true</span>]);</pre></div>
|
||
</div><h3 id="method.into_group_map" class="method"><code>fn <a href="#method.into_group_map" class="fnname">into_group_map</a><K, V>(self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><K, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><V>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>K, V<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2518-2523" title="goto source code">[src]</a></h3><div class="docblock"><p>Return a <code>HashMap</code> of keys mapped to <code>Vec</code>s of values. Keys and values
|
||
are taken from <code>(Key, Value)</code> tuple pairs yielded by the input iterator.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">0</span>, <span class="number">10</span>), (<span class="number">2</span>, <span class="number">12</span>), (<span class="number">3</span>, <span class="number">13</span>), (<span class="number">0</span>, <span class="number">20</span>), (<span class="number">3</span>, <span class="number">33</span>), (<span class="number">2</span>, <span class="number">42</span>)];
|
||
<span class="kw">let</span> <span class="ident">lookup</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">into_iter</span>().<span class="ident">into_group_map</span>();
|
||
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">lookup</span>[<span class="kw-2">&</span><span class="number">0</span>], <span class="macro">vec</span><span class="macro">!</span>[<span class="number">10</span>, <span class="number">20</span>]);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">lookup</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="number">1</span>), <span class="prelude-val">None</span>);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">lookup</span>[<span class="kw-2">&</span><span class="number">2</span>], <span class="macro">vec</span><span class="macro">!</span>[<span class="number">12</span>, <span class="number">42</span>]);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">lookup</span>[<span class="kw-2">&</span><span class="number">3</span>], <span class="macro">vec</span><span class="macro">!</span>[<span class="number">13</span>, <span class="number">33</span>]);</pre></div>
|
||
</div><h3 id="method.into_group_map_by" class="method"><code>fn <a href="#method.into_group_map_by" class="fnname">into_group_map_by</a><K, V, F>(self, f: F) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><K, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><V>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = V> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>V) -> K, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2551-2558" title="goto source code">[src]</a></h3><div class="docblock"><p>Return an <code>Iterator</code> on a HahMap. Keys mapped to <code>Vec</code>s of values. The key is specified in
|
||
in the closure.
|
||
Different of into_group_map_by because the key is still present. It is also more general.
|
||
you can also fold the group_map.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">collections</span>::<span class="ident">HashMap</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">0</span>, <span class="number">10</span>), (<span class="number">2</span>, <span class="number">12</span>), (<span class="number">3</span>, <span class="number">13</span>), (<span class="number">0</span>, <span class="number">20</span>), (<span class="number">3</span>, <span class="number">33</span>), (<span class="number">2</span>, <span class="number">42</span>)];
|
||
<span class="kw">let</span> <span class="ident">lookup</span>: <span class="ident">HashMap</span><span class="op"><</span><span class="ident">u32</span>,<span class="ident">Vec</span><span class="op"><</span>(<span class="ident">u32</span>, <span class="ident">u32</span>)<span class="op">></span><span class="op">></span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">clone</span>().<span class="ident">into_iter</span>().<span class="ident">into_group_map_by</span>(<span class="op">|</span><span class="ident">a</span><span class="op">|</span>
|
||
<span class="ident">a</span>.<span class="number">0</span>);
|
||
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">lookup</span>[<span class="kw-2">&</span><span class="number">0</span>], <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">0</span>,<span class="number">10</span>),(<span class="number">0</span>,<span class="number">20</span>)]);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">lookup</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="number">1</span>), <span class="prelude-val">None</span>);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">lookup</span>[<span class="kw-2">&</span><span class="number">2</span>], <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">2</span>,<span class="number">12</span>), (<span class="number">2</span>,<span class="number">42</span>)]);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">lookup</span>[<span class="kw-2">&</span><span class="number">3</span>], <span class="macro">vec</span><span class="macro">!</span>[(<span class="number">3</span>,<span class="number">13</span>), (<span class="number">3</span>,<span class="number">33</span>)]);
|
||
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(
|
||
<span class="ident">data</span>.<span class="ident">into_iter</span>()
|
||
.<span class="ident">into_group_map_by</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="number">0</span>)
|
||
.<span class="ident">into_iter</span>()
|
||
.<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">key</span>, <span class="ident">values</span>)<span class="op">|</span> (<span class="ident">key</span>, <span class="ident">values</span>.<span class="ident">into_iter</span>().<span class="ident">fold</span>(<span class="number">0</span>,<span class="op">|</span><span class="ident">acc</span>, (<span class="kw">_</span>,<span class="ident">v</span>)<span class="op">|</span> <span class="ident">acc</span> <span class="op">+</span> <span class="ident">v</span> )))
|
||
.<span class="ident">collect</span>::<span class="op"><</span><span class="ident">HashMap</span><span class="op"><</span><span class="ident">u32</span>,<span class="ident">u32</span><span class="op">></span><span class="op">></span>()[<span class="kw-2">&</span><span class="number">0</span>], <span class="number">30</span>)</pre></div>
|
||
</div><h3 id="method.into_grouping_map" class="method"><code>fn <a href="#method.into_grouping_map" class="fnname">into_grouping_map</a><K, V>(self) -> <a class="struct" href="../itertools/structs/struct.GroupingMap.html" title="struct itertools::structs::GroupingMap">GroupingMap</a><Self> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>K, V<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2570-2575" title="goto source code">[src]</a></h3><div class="docblock"><p>Constructs a <code>GroupingMap</code> to be used later with one of the efficient
|
||
group-and-fold operations it allows to perform.</p>
|
||
<p>The input iterator must yield item in the form of <code>(K, V)</code> where the
|
||
value of type <code>K</code> will be used as key to identify the groups and the
|
||
value of type <code>V</code> as value for the folding operation.</p>
|
||
<p>See <a href="./structs/struct.GroupingMap.html"><code>GroupingMap</code></a> for more informations
|
||
on what operations are available.</p>
|
||
</div><h3 id="method.into_grouping_map_by" class="method"><code>fn <a href="#method.into_grouping_map_by" class="fnname">into_grouping_map_by</a><K, V, F>(self, key_mapper: F) -> <a class="type" href="../itertools/structs/type.GroupingMapBy.html" title="type itertools::structs::GroupingMapBy">GroupingMapBy</a><Self, F> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = V> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>V) -> K, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2586-2592" title="goto source code">[src]</a></h3><div class="docblock"><p>Constructs a <code>GroupingMap</code> to be used later with one of the efficient
|
||
group-and-fold operations it allows to perform.</p>
|
||
<p>The values from this iterator will be used as values for the folding operation
|
||
while the keys will be obtained from the values by calling <code>key_mapper</code>.</p>
|
||
<p>See <a href="./structs/struct.GroupingMap.html"><code>GroupingMap</code></a> for more informations
|
||
on what operations are available.</p>
|
||
</div><h3 id="method.minmax" class="method"><code>fn <a href="#method.minmax" class="fnname">minmax</a>(self) -> <a class="enum" href="../itertools/enum.MinMaxResult.html" title="enum itertools::MinMaxResult">MinMaxResult</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2629-2633" title="goto source code">[src]</a></h3><div class="docblock"><p>Return the minimum and maximum elements in the iterator.</p>
|
||
<p>The return type <code>MinMaxResult</code> is an enum of three variants:</p>
|
||
<ul>
|
||
<li><code>NoElements</code> if the iterator is empty.</li>
|
||
<li><code>OneElement(x)</code> if the iterator has exactly one element.</li>
|
||
<li><code>MinMax(x, y)</code> is returned otherwise, where <code>x <= y</code>. Two
|
||
values are equal if and only if there is more than one
|
||
element in the iterator and all elements are equal.</li>
|
||
</ul>
|
||
<p>On an iterator of length <code>n</code>, <code>minmax</code> does <code>1.5 * n</code> comparisons,
|
||
and so is faster than calling <code>min</code> and <code>max</code> separately which does
|
||
<code>2 * n</code> comparisons.</p>
|
||
<h1 id="examples-2" class="section-header"><a href="#examples-2">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">MinMaxResult</span>::{<span class="ident">NoElements</span>, <span class="ident">OneElement</span>, <span class="ident">MinMax</span>};
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span>: [<span class="ident">i32</span>; <span class="number">0</span>] <span class="op">=</span> [];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">minmax</span>(), <span class="ident">NoElements</span>);
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">1</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">minmax</span>(), <span class="ident">OneElement</span>(<span class="kw-2">&</span><span class="number">1</span>));
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">minmax</span>(), <span class="ident">MinMax</span>(<span class="kw-2">&</span><span class="number">1</span>, <span class="kw-2">&</span><span class="number">5</span>));
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">minmax</span>(), <span class="ident">MinMax</span>(<span class="kw-2">&</span><span class="number">1</span>, <span class="kw-2">&</span><span class="number">1</span>));</pre></div>
|
||
<p>The elements can be floats but no particular result is guaranteed
|
||
if an element is NaN.</p>
|
||
</div><h3 id="method.minmax_by_key" class="method"><code>fn <a href="#method.minmax_by_key" class="fnname">minmax_by_key</a><K, F>(self, key: F) -> <a class="enum" href="../itertools/enum.MinMaxResult.html" title="enum itertools::MinMaxResult">MinMaxResult</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2646-2650" title="goto source code">[src]</a></h3><div class="docblock"><p>Return the minimum and maximum element of an iterator, as determined by
|
||
the specified function.</p>
|
||
<p>The return value is a variant of <code>MinMaxResult</code> like for <code>minmax()</code>.</p>
|
||
<p>For the minimum, the first minimal element is returned. For the maximum,
|
||
the last maximal element wins. This matches the behavior of the standard
|
||
<code>Iterator::min()</code> and <code>Iterator::max()</code> methods.</p>
|
||
<p>The keys can be floats but no particular result is guaranteed
|
||
if a key is NaN.</p>
|
||
</div><h3 id="method.minmax_by" class="method"><code>fn <a href="#method.minmax_by" class="fnname">minmax_by</a><F>(self, compare: F) -> <a class="enum" href="../itertools/enum.MinMaxResult.html" title="enum itertools::MinMaxResult">MinMaxResult</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2660-2668" title="goto source code">[src]</a></h3><div class="docblock"><p>Return the minimum and maximum element of an iterator, as determined by
|
||
the specified comparison function.</p>
|
||
<p>The return value is a variant of <code>MinMaxResult</code> like for <code>minmax()</code>.</p>
|
||
<p>For the minimum, the first minimal element is returned. For the maximum,
|
||
the last maximal element wins. This matches the behavior of the standard
|
||
<code>Iterator::min()</code> and <code>Iterator::max()</code> methods.</p>
|
||
</div><h3 id="method.position_max" class="method"><code>fn <a href="#method.position_max" class="fnname">position_max</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2689-2695" title="goto source code">[src]</a></h3><div class="docblock"><p>Return the position of the maximum element in the iterator.</p>
|
||
<p>If several elements are equally maximum, the position of the
|
||
last of them is returned.</p>
|
||
<h1 id="examples-3" class="section-header"><a href="#examples-3">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span>: [<span class="ident">i32</span>; <span class="number">0</span>] <span class="op">=</span> [];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_max</span>(), <span class="prelude-val">None</span>);
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="op">-</span><span class="number">3</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="number">5</span>, <span class="op">-</span><span class="number">10</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_max</span>(), <span class="prelude-val">Some</span>(<span class="number">3</span>));
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">1</span>, <span class="number">1</span>, <span class="op">-</span><span class="number">1</span>, <span class="op">-</span><span class="number">1</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_max</span>(), <span class="prelude-val">Some</span>(<span class="number">1</span>));</pre></div>
|
||
</div><h3 id="method.position_max_by_key" class="method"><code>fn <a href="#method.position_max_by_key" class="fnname">position_max_by_key</a><K, F>(self, key: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2717-2723" title="goto source code">[src]</a></h3><div class="docblock"><p>Return the position of the maximum element in the iterator, as
|
||
determined by the specified function.</p>
|
||
<p>If several elements are equally maximum, the position of the
|
||
last of them is returned.</p>
|
||
<h1 id="examples-4" class="section-header"><a href="#examples-4">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span>: [<span class="ident">i32</span>; <span class="number">0</span>] <span class="op">=</span> [];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_max_by_key</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">abs</span>()), <span class="prelude-val">None</span>);
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="op">-</span><span class="number">3_i32</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="number">5</span>, <span class="op">-</span><span class="number">10</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_max_by_key</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">abs</span>()), <span class="prelude-val">Some</span>(<span class="number">4</span>));
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">1_i32</span>, <span class="number">1</span>, <span class="op">-</span><span class="number">1</span>, <span class="op">-</span><span class="number">1</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_max_by_key</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">abs</span>()), <span class="prelude-val">Some</span>(<span class="number">3</span>));</pre></div>
|
||
</div><h3 id="method.position_max_by" class="method"><code>fn <a href="#method.position_max_by" class="fnname">position_max_by</a><F>(self, compare: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2745-2751" title="goto source code">[src]</a></h3><div class="docblock"><p>Return the position of the maximum element in the iterator, as
|
||
determined by the specified comparison function.</p>
|
||
<p>If several elements are equally maximum, the position of the
|
||
last of them is returned.</p>
|
||
<h1 id="examples-5" class="section-header"><a href="#examples-5">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span>: [<span class="ident">i32</span>; <span class="number">0</span>] <span class="op">=</span> [];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_max_by</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">cmp</span>(<span class="ident">y</span>)), <span class="prelude-val">None</span>);
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="op">-</span><span class="number">3_i32</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="number">5</span>, <span class="op">-</span><span class="number">10</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_max_by</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">cmp</span>(<span class="ident">y</span>)), <span class="prelude-val">Some</span>(<span class="number">3</span>));
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">1_i32</span>, <span class="number">1</span>, <span class="op">-</span><span class="number">1</span>, <span class="op">-</span><span class="number">1</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_max_by</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">cmp</span>(<span class="ident">y</span>)), <span class="prelude-val">Some</span>(<span class="number">1</span>));</pre></div>
|
||
</div><h3 id="method.position_min" class="method"><code>fn <a href="#method.position_min" class="fnname">position_min</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2772-2778" title="goto source code">[src]</a></h3><div class="docblock"><p>Return the position of the minimum element in the iterator.</p>
|
||
<p>If several elements are equally minimum, the position of the
|
||
first of them is returned.</p>
|
||
<h1 id="examples-6" class="section-header"><a href="#examples-6">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span>: [<span class="ident">i32</span>; <span class="number">0</span>] <span class="op">=</span> [];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_min</span>(), <span class="prelude-val">None</span>);
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="op">-</span><span class="number">3</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="number">5</span>, <span class="op">-</span><span class="number">10</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_min</span>(), <span class="prelude-val">Some</span>(<span class="number">4</span>));
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">1</span>, <span class="number">1</span>, <span class="op">-</span><span class="number">1</span>, <span class="op">-</span><span class="number">1</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_min</span>(), <span class="prelude-val">Some</span>(<span class="number">2</span>));</pre></div>
|
||
</div><h3 id="method.position_min_by_key" class="method"><code>fn <a href="#method.position_min_by_key" class="fnname">position_min_by_key</a><K, F>(self, key: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2800-2806" title="goto source code">[src]</a></h3><div class="docblock"><p>Return the position of the minimum element in the iterator, as
|
||
determined by the specified function.</p>
|
||
<p>If several elements are equally minimum, the position of the
|
||
first of them is returned.</p>
|
||
<h1 id="examples-7" class="section-header"><a href="#examples-7">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span>: [<span class="ident">i32</span>; <span class="number">0</span>] <span class="op">=</span> [];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_min_by_key</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">abs</span>()), <span class="prelude-val">None</span>);
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="op">-</span><span class="number">3_i32</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="number">5</span>, <span class="op">-</span><span class="number">10</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_min_by_key</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">abs</span>()), <span class="prelude-val">Some</span>(<span class="number">1</span>));
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">1_i32</span>, <span class="number">1</span>, <span class="op">-</span><span class="number">1</span>, <span class="op">-</span><span class="number">1</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_min_by_key</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">abs</span>()), <span class="prelude-val">Some</span>(<span class="number">0</span>));</pre></div>
|
||
</div><h3 id="method.position_min_by" class="method"><code>fn <a href="#method.position_min_by" class="fnname">position_min_by</a><F>(self, compare: F) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2828-2834" title="goto source code">[src]</a></h3><div class="docblock"><p>Return the position of the minimum element in the iterator, as
|
||
determined by the specified comparison function.</p>
|
||
<p>If several elements are equally minimum, the position of the
|
||
first of them is returned.</p>
|
||
<h1 id="examples-8" class="section-header"><a href="#examples-8">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span>: [<span class="ident">i32</span>; <span class="number">0</span>] <span class="op">=</span> [];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_min_by</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">cmp</span>(<span class="ident">y</span>)), <span class="prelude-val">None</span>);
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="op">-</span><span class="number">3_i32</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="number">5</span>, <span class="op">-</span><span class="number">10</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_min_by</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">cmp</span>(<span class="ident">y</span>)), <span class="prelude-val">Some</span>(<span class="number">4</span>));
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">1_i32</span>, <span class="number">1</span>, <span class="op">-</span><span class="number">1</span>, <span class="op">-</span><span class="number">1</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_min_by</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">cmp</span>(<span class="ident">y</span>)), <span class="prelude-val">Some</span>(<span class="number">2</span>));</pre></div>
|
||
</div><h3 id="method.position_minmax" class="method"><code>fn <a href="#method.position_minmax" class="fnname">position_minmax</a>(self) -> <a class="enum" href="../itertools/enum.MinMaxResult.html" title="enum itertools::MinMaxResult">MinMaxResult</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2880-2889" title="goto source code">[src]</a></h3><div class="docblock"><p>Return the positions of the minimum and maximum elements in
|
||
the iterator.</p>
|
||
<p>The return type <a href="enum.MinMaxResult.html"><code>MinMaxResult</code></a> is an enum of three variants:</p>
|
||
<ul>
|
||
<li><code>NoElements</code> if the iterator is empty.</li>
|
||
<li><code>OneElement(xpos)</code> if the iterator has exactly one element.</li>
|
||
<li><code>MinMax(xpos, ypos)</code> is returned otherwise, where the
|
||
element at <code>xpos</code> ≤ the element at <code>ypos</code>. While the
|
||
referenced elements themselves may be equal, <code>xpos</code> cannot
|
||
be equal to <code>ypos</code>.</li>
|
||
</ul>
|
||
<p>On an iterator of length <code>n</code>, <code>position_minmax</code> does <code>1.5 * n</code>
|
||
comparisons, and so is faster than calling <code>positon_min</code> and
|
||
<code>position_max</code> separately which does <code>2 * n</code> comparisons.</p>
|
||
<p>For the minimum, if several elements are equally minimum, the
|
||
position of the first of them is returned. For the maximum, if
|
||
several elements are equally maximum, the position of the last
|
||
of them is returned.</p>
|
||
<p>The elements can be floats but no particular result is
|
||
guaranteed if an element is NaN.</p>
|
||
<h1 id="examples-9" class="section-header"><a href="#examples-9">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">MinMaxResult</span>::{<span class="ident">NoElements</span>, <span class="ident">OneElement</span>, <span class="ident">MinMax</span>};
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span>: [<span class="ident">i32</span>; <span class="number">0</span>] <span class="op">=</span> [];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_minmax</span>(), <span class="ident">NoElements</span>);
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">10</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_minmax</span>(), <span class="ident">OneElement</span>(<span class="number">0</span>));
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="op">-</span><span class="number">3</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="number">5</span>, <span class="op">-</span><span class="number">10</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_minmax</span>(), <span class="ident">MinMax</span>(<span class="number">4</span>, <span class="number">3</span>));
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">1</span>, <span class="number">1</span>, <span class="op">-</span><span class="number">1</span>, <span class="op">-</span><span class="number">1</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_minmax</span>(), <span class="ident">MinMax</span>(<span class="number">2</span>, <span class="number">1</span>));</pre></div>
|
||
</div><h3 id="method.position_minmax_by_key" class="method"><code>fn <a href="#method.position_minmax_by_key" class="fnname">position_minmax_by_key</a><K, F>(self, key: F) -> <a class="enum" href="../itertools/enum.MinMaxResult.html" title="enum itertools::MinMaxResult">MinMaxResult</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2926-2935" title="goto source code">[src]</a></h3><div class="docblock"><p>Return the postions of the minimum and maximum elements of an
|
||
iterator, as determined by the specified function.</p>
|
||
<p>The return value is a variant of <a href="enum.MinMaxResult.html"><code>MinMaxResult</code></a> like for
|
||
<a href="#method.position_minmax"><code>position_minmax</code></a>.</p>
|
||
<p>For the minimum, if several elements are equally minimum, the
|
||
position of the first of them is returned. For the maximum, if
|
||
several elements are equally maximum, the position of the last
|
||
of them is returned.</p>
|
||
<p>The keys can be floats but no particular result is guaranteed
|
||
if a key is NaN.</p>
|
||
<h1 id="examples-10" class="section-header"><a href="#examples-10">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">MinMaxResult</span>::{<span class="ident">NoElements</span>, <span class="ident">OneElement</span>, <span class="ident">MinMax</span>};
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span>: [<span class="ident">i32</span>; <span class="number">0</span>] <span class="op">=</span> [];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_minmax_by_key</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">abs</span>()), <span class="ident">NoElements</span>);
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">10_i32</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_minmax_by_key</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">abs</span>()), <span class="ident">OneElement</span>(<span class="number">0</span>));
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="op">-</span><span class="number">3_i32</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="number">5</span>, <span class="op">-</span><span class="number">10</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_minmax_by_key</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">abs</span>()), <span class="ident">MinMax</span>(<span class="number">1</span>, <span class="number">4</span>));
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">1_i32</span>, <span class="number">1</span>, <span class="op">-</span><span class="number">1</span>, <span class="op">-</span><span class="number">1</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_minmax_by_key</span>(<span class="op">|</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">abs</span>()), <span class="ident">MinMax</span>(<span class="number">0</span>, <span class="number">3</span>));</pre></div>
|
||
</div><h3 id="method.position_minmax_by" class="method"><code>fn <a href="#method.position_minmax_by" class="fnname">position_minmax_by</a><F>(self, compare: F) -> <a class="enum" href="../itertools/enum.MinMaxResult.html" title="enum itertools::MinMaxResult">MinMaxResult</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, &Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2969-2978" title="goto source code">[src]</a></h3><div class="docblock"><p>Return the postions of the minimum and maximum elements of an
|
||
iterator, as determined by the specified comparison function.</p>
|
||
<p>The return value is a variant of <a href="enum.MinMaxResult.html"><code>MinMaxResult</code></a> like for
|
||
<a href="#method.position_minmax"><code>position_minmax</code></a>.</p>
|
||
<p>For the minimum, if several elements are equally minimum, the
|
||
position of the first of them is returned. For the maximum, if
|
||
several elements are equally maximum, the position of the last
|
||
of them is returned.</p>
|
||
<h1 id="examples-11" class="section-header"><a href="#examples-11">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">MinMaxResult</span>::{<span class="ident">NoElements</span>, <span class="ident">OneElement</span>, <span class="ident">MinMax</span>};
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span>: [<span class="ident">i32</span>; <span class="number">0</span>] <span class="op">=</span> [];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_minmax_by</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">cmp</span>(<span class="ident">y</span>)), <span class="ident">NoElements</span>);
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">10_i32</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_minmax_by</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">cmp</span>(<span class="ident">y</span>)), <span class="ident">OneElement</span>(<span class="number">0</span>));
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="op">-</span><span class="number">3_i32</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="number">5</span>, <span class="op">-</span><span class="number">10</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_minmax_by</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">cmp</span>(<span class="ident">y</span>)), <span class="ident">MinMax</span>(<span class="number">4</span>, <span class="number">3</span>));
|
||
|
||
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> [<span class="number">1_i32</span>, <span class="number">1</span>, <span class="op">-</span><span class="number">1</span>, <span class="op">-</span><span class="number">1</span>];
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">a</span>.<span class="ident">iter</span>().<span class="ident">position_minmax_by</span>(<span class="op">|</span><span class="ident">x</span>, <span class="ident">y</span><span class="op">|</span> <span class="ident">x</span>.<span class="ident">cmp</span>(<span class="ident">y</span>)), <span class="ident">MinMax</span>(<span class="number">2</span>, <span class="number">1</span>));</pre></div>
|
||
</div><h3 id="method.exactly_one" class="method"><code>fn <a href="#method.exactly_one" class="fnname">exactly_one</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, <a class="struct" href="../itertools/structs/struct.ExactlyOneError.html" title="struct itertools::structs::ExactlyOneError">ExactlyOneError</a><Self>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#2997-3014" title="goto source code">[src]</a></h3><div class="docblock"><p>If the iterator yields exactly one element, that element will be returned, otherwise
|
||
an error will be returned containing an iterator that has the same output as the input
|
||
iterator.</p>
|
||
<p>This provides an additional layer of validation over just calling <code>Iterator::next()</code>.
|
||
If your assumption that there should only be one element yielded is false this provides
|
||
the opportunity to detect and handle that, preventing errors at a distance.</p>
|
||
<h1 id="examples-12" class="section-header"><a href="#examples-12">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>((<span class="number">0</span>..<span class="number">10</span>).<span class="ident">filter</span>(<span class="op">|</span><span class="kw-2">&</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span> <span class="op">=</span><span class="op">=</span> <span class="number">2</span>).<span class="ident">exactly_one</span>().<span class="ident">unwrap</span>(), <span class="number">2</span>);
|
||
<span class="macro">assert</span><span class="macro">!</span>((<span class="number">0</span>..<span class="number">10</span>).<span class="ident">filter</span>(<span class="op">|</span><span class="kw-2">&</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span> <span class="op">></span> <span class="number">1</span> <span class="op">&&</span> <span class="ident">x</span> <span class="op"><</span> <span class="number">4</span>).<span class="ident">exactly_one</span>().<span class="ident">unwrap_err</span>().<span class="ident">eq</span>(<span class="number">2</span>..<span class="number">4</span>));
|
||
<span class="macro">assert</span><span class="macro">!</span>((<span class="number">0</span>..<span class="number">10</span>).<span class="ident">filter</span>(<span class="op">|</span><span class="kw-2">&</span><span class="ident">x</span><span class="op">|</span> <span class="ident">x</span> <span class="op">></span> <span class="number">1</span> <span class="op">&&</span> <span class="ident">x</span> <span class="op"><</span> <span class="number">5</span>).<span class="ident">exactly_one</span>().<span class="ident">unwrap_err</span>().<span class="ident">eq</span>(<span class="number">2</span>..<span class="number">5</span>));
|
||
<span class="macro">assert</span><span class="macro">!</span>((<span class="number">0</span>..<span class="number">10</span>).<span class="ident">filter</span>(<span class="op">|</span><span class="kw-2">&</span><span class="kw">_</span><span class="op">|</span> <span class="bool-val">false</span>).<span class="ident">exactly_one</span>().<span class="ident">unwrap_err</span>().<span class="ident">eq</span>(<span class="number">0</span>..<span class="number">0</span>));</pre></div>
|
||
</div><h3 id="method.multipeek" class="method"><code>fn <a href="#method.multipeek" class="fnname">multipeek</a>(self) -> <a class="struct" href="../itertools/structs/struct.MultiPeek.html" title="struct itertools::structs::MultiPeek">MultiPeek</a><Self><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<div class="notable-traits-tooltiptext"><span class="docblock"><h3 class="notable">Notable traits for <a class="struct" href="../itertools/structs/struct.MultiPeek.html" title="struct itertools::structs::MultiPeek">MultiPeek</a><I></h3><code class="content"><span class="where fmt-newline">impl<I> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="../itertools/structs/struct.MultiPeek.html" title="struct itertools::structs::MultiPeek">MultiPeek</a><I> <span class="where fmt-newline">where<br> I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>, </span></span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="type">Item</a> = I::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>;</span></code></span></div></span></span> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#3031-3036" title="goto source code">[src]</a></h3><div class="docblock"><p>An iterator adaptor that allows the user to peek at multiple <code>.next()</code>
|
||
values without advancing the base iterator.</p>
|
||
<h1 id="examples-13" class="section-header"><a href="#examples-13">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
|
||
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">iter</span> <span class="op">=</span> (<span class="number">0</span>..<span class="number">10</span>).<span class="ident">multipeek</span>();
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">iter</span>.<span class="ident">peek</span>(), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="number">0</span>));
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">iter</span>.<span class="ident">peek</span>(), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="number">1</span>));
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">iter</span>.<span class="ident">peek</span>(), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="number">2</span>));
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">iter</span>.<span class="ident">next</span>(), <span class="prelude-val">Some</span>(<span class="number">0</span>));
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">iter</span>.<span class="ident">peek</span>(), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="number">1</span>));</pre></div>
|
||
</div><h3 id="method.counts" class="method"><code>fn <a href="#method.counts" class="fnname">counts</a>(self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a><Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>> <span class="where fmt-newline">where<br> Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,<br> Self::<a class="type" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a>, </span></code><a class="srclink" href="../src/itertools/lib.rs.html#3052-3060" title="goto source code">[src]</a></h3><div class="docblock"><p>Collect the items in this iterator and return a <code>HashMap</code> which
|
||
contains each item that appears in the iterator and the number
|
||
of times it appears.</p>
|
||
<h1 id="examples-14" class="section-header"><a href="#examples-14">Examples</a></h1>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">let</span> <span class="ident">counts</span> <span class="op">=</span> [<span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="number">5</span>].<span class="ident">into_iter</span>().<span class="ident">counts</span>();
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">counts</span>[<span class="kw-2">&</span><span class="number">1</span>], <span class="number">3</span>);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">counts</span>[<span class="kw-2">&</span><span class="number">3</span>], <span class="number">2</span>);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">counts</span>[<span class="kw-2">&</span><span class="number">5</span>], <span class="number">1</span>);
|
||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">counts</span>.<span class="ident">get</span>(<span class="kw-2">&</span><span class="number">0</span>), <span class="prelude-val">None</span>);</pre></div>
|
||
</div></div><span class="loading-content">Loading content...</span><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><h3 id="impl-Itertools" class="impl"><code class="in-band">impl<T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>> Itertools for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>, </span></code><a href="#impl-Itertools" class="anchor"></a><a class="srclink" href="../src/itertools/lib.rs.html#3063" title="goto source code">[src]</a></h3><div class="impl-items"></div></div><span class="loading-content">Loading content...</span><script type="text/javascript" src="../implementors/itertools/trait.Itertools.js" async></script></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../" data-current-crate="itertools"></div>
|
||
<script src="../main.js"></script><script defer src="../search-index.js"></script></body></html> |