Skip to content

Commit 819d57a

Browse files
committed
core::iter::Iterator::flatten: improve docs wrt. deep vs. shallow flatten per @clarcharr's review
1 parent 3d74c74 commit 819d57a

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

src/libcore/iter/iterator.rs

+20
Original file line numberDiff line numberDiff line change
@@ -1074,6 +1074,26 @@ pub trait Iterator {
10741074
/// .collect();
10751075
/// assert_eq!(merged, "alphabetagamma");
10761076
/// ```
1077+
///
1078+
/// Flattening once only removes one level of nesting:
1079+
///
1080+
/// ```
1081+
/// #![feature(iterator_flatten)]
1082+
///
1083+
/// let d3 = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]];
1084+
///
1085+
/// let d2 = d3.iter().flatten().collect::<Vec<_>>();
1086+
/// assert_eq!(d2, [&[1, 2], &[3, 4], &[5, 6], &[7, 8]]);
1087+
///
1088+
/// let d1 = d3.iter().flatten().flatten().collect::<Vec<_>>();
1089+
/// assert_eq!(d1, [&1, &2, &3, &4, &5, &6, &7, &8]);
1090+
/// ```
1091+
///
1092+
/// Here we see that `flatten()` does not perform a "deep" flatten.
1093+
/// Instead, only one level of nesting is removed. That is, if you
1094+
/// `flatten()` a three-dimensional array the result will be
1095+
/// two-dimensional and not one-dimensional. To get a one-dimensional
1096+
/// structure, you have to `flatten()` again.
10771097
#[inline]
10781098
#[unstable(feature = "iterator_flatten", issue = "48213")]
10791099
fn flatten(self) -> Flatten<Self>

0 commit comments

Comments
 (0)