Skip to content

Commit b60fe39

Browse files
committed
Add remark regarding DoubleEndedIterator
1 parent aeca4d6 commit b60fe39

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

src/libcore/iter/traits/double_ended.rs

+26
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,32 @@ pub trait DoubleEndedIterator: Iterator {
6363
/// assert_eq!(None, iter.next());
6464
/// assert_eq!(None, iter.next_back());
6565
/// ```
66+
///
67+
/// # Remarks
68+
///
69+
/// The elements yielded by `DoubleEndedIterator`'s methods may differ from
70+
/// the ones yielded by `Iterator`'s methods:
71+
///
72+
/// ```
73+
/// let vec = vec![(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b')];
74+
/// let uniq_by_fst_comp = || {
75+
/// let mut seen = std::collections::HashSet::new();
76+
/// vec.iter().copied().filter(move |x| seen.insert(x.0))
77+
/// };
78+
///
79+
/// assert_eq!(uniq_by_fst_comp().last(), Some((2, 'a')));
80+
/// assert_eq!(uniq_by_fst_comp().next_back(), Some((2, 'b')));
81+
///
82+
/// assert_eq!(
83+
/// uniq_by_fst_comp().fold(vec![], |mut v, x| {v.push(x); v}),
84+
/// vec![(1, 'a'), (2, 'a')]
85+
/// );
86+
/// assert_eq!(
87+
/// uniq_by_fst_comp().rfold(vec![], |mut v, x| {v.push(x); v}),
88+
/// vec![(2, 'b'), (1, 'c')]
89+
/// );
90+
/// ```
91+
///
6692
#[stable(feature = "rust1", since = "1.0.0")]
6793
fn next_back(&mut self) -> Option<Self::Item>;
6894

0 commit comments

Comments
 (0)