diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2021-05-27 20:08:21 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-27 20:08:21 +0200 |
| commit | e30192ac5c3ea61d30e2d8070289524975ea7315 (patch) | |
| tree | 7cc34d9b88f70043634527dd50aa9505dde0ff05 | |
| parent | 6ac83e1808fd860c8c1279cc6547e6b248bc4b47 (diff) | |
| parent | b00f6fc8a16656391f9014cda73b24712eaf2ccb (diff) | |
| download | rust-e30192ac5c3ea61d30e2d8070289524975ea7315.tar.gz rust-e30192ac5c3ea61d30e2d8070289524975ea7315.zip | |
Rollup merge of #85730 - Smittyvb:iter-min-max-floats, r=m-ou-se
Mention workaround for floats in Iterator::{min, max}
`Iterator::{min, max}` can't be used with iterators of floats due to NaN issues. This suggests a workaround in the documentation of those functions.
| -rw-r--r-- | library/core/src/iter/traits/iterator.rs | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/library/core/src/iter/traits/iterator.rs b/library/core/src/iter/traits/iterator.rs index ad77e76c94f..96b924f6e2a 100644 --- a/library/core/src/iter/traits/iterator.rs +++ b/library/core/src/iter/traits/iterator.rs @@ -2568,6 +2568,18 @@ pub trait Iterator { /// If several elements are equally maximum, the last element is /// returned. If the iterator is empty, [`None`] is returned. /// + /// Note that [`f32`]/[`f64`] doesn't implement [`Ord`] due to NaN being + /// incomparable. You can work around this by using [`Iterator::reduce`]: + /// ``` + /// assert_eq!( + /// vec![2.4, f32::NAN, 1.3] + /// .into_iter() + /// .reduce(f32::max) + /// .unwrap(), + /// 2.4 + /// ); + /// ``` + /// /// # Examples /// /// Basic usage: @@ -2591,8 +2603,20 @@ pub trait Iterator { /// Returns the minimum element of an iterator. /// - /// If several elements are equally minimum, the first element is - /// returned. If the iterator is empty, [`None`] is returned. + /// If several elements are equally minimum, the first element is returned. + /// If the iterator is empty, [`None`] is returned. + /// + /// Note that [`f32`]/[`f64`] doesn't implement [`Ord`] due to NaN being + /// incomparable. You can work around this by using [`Iterator::reduce`]: + /// ``` + /// assert_eq!( + /// vec![2.4, f32::NAN, 1.3] + /// .into_iter() + /// .reduce(f32::min) + /// .unwrap(), + /// 1.3 + /// ); + /// ``` /// /// # Examples /// |
