diff options
| author | Jubilee <workingjubilee@gmail.com> | 2025-02-08 20:41:21 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-08 20:41:21 -0800 |
| commit | c30908979f1fcd6168dc4ad1372eeaee9c32412d (patch) | |
| tree | 49d528a781decc61691c5b4cbfb79d7673f51645 | |
| parent | 5e4d6278af5ca9a95401d8efbec93954608d396a (diff) | |
| parent | 4457f44065837198ba751ee1c3ff6beb0036bb4b (diff) | |
| download | rust-c30908979f1fcd6168dc4ad1372eeaee9c32412d.tar.gz rust-c30908979f1fcd6168dc4ad1372eeaee9c32412d.zip | |
Rollup merge of #136710 - JakenHerman:jaken/iterator-docs, r=workingjubilee
Document `Sum::sum` returns additive identities for `[]` Because the neutral element of `<fNN as iter::Sum>` was changed to `neg_zero`, the documentation needed to be updated, as it was reporting inadequate information about what should be expected from the return. Relevant Commit: https://github.com/rust-lang/rust/commit/490818851860fb257e23fe7aa0ee32eaffc4ba40 Relevant Pull Request: https://github.com/rust-lang/rust/pull/129321 --- The referenced commit causes unintended side effects on presentation layer applications like using Tera templates, for example. I'm not sure what the motivation was behind the original change, but it seems like more discussion should be put into this issue and potentially have that change reverted.
| -rw-r--r-- | library/core/src/iter/traits/iterator.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/library/core/src/iter/traits/iterator.rs b/library/core/src/iter/traits/iterator.rs index 91c3a4b29b5..42886e90f99 100644 --- a/library/core/src/iter/traits/iterator.rs +++ b/library/core/src/iter/traits/iterator.rs @@ -3493,7 +3493,8 @@ pub trait Iterator { /// /// Takes each element, adds them together, and returns the result. /// - /// An empty iterator returns the zero value of the type. + /// An empty iterator returns the *additive identity* ("zero") of the type, + /// which is `0` for integers and `-0.0` for floats. /// /// `sum()` can be used to sum any type implementing [`Sum`][`core::iter::Sum`], /// including [`Option`][`Option::sum`] and [`Result`][`Result::sum`]. @@ -3511,6 +3512,10 @@ pub trait Iterator { /// let sum: i32 = a.iter().sum(); /// /// assert_eq!(sum, 6); + /// + /// let b: Vec<f32> = vec![]; + /// let sum: f32 = b.iter().sum(); + /// assert_eq!(sum, -0.0_f32); /// ``` #[stable(feature = "iter_arith", since = "1.11.0")] fn sum<S>(self) -> S |
