File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 4545/// The first component of the value yielded by `WithPosition`.
4646/// Indicates the position of this element in the iterator results.
4747///
48- /// When handling the first or last position,
48+ /// When handling the [ first](Position::is_first) or [ last](Position::is_last) position,
4949/// remember to consider the special case of [`Position::Only`].
5050///
5151/// See [`.with_position()`](crate::Itertools::with_position) for more information.
@@ -58,9 +58,23 @@ pub enum Position {
5858 /// This is the last element, and there was more than one element.
5959 Last ,
6060 /// This is the only element.
61+ ///
62+ /// Makes [`.is_first()`](Position::is_first) and [`.is_last()`](Position::is_last) true at the same time.
6163 Only ,
6264}
6365
66+ impl Position {
67+ /// Unlike `position == First`, it's also true for [`Position::Only`]
68+ pub fn is_first ( self ) -> bool {
69+ self == Self :: First || self == Self :: Only
70+ }
71+
72+ /// Unlike `position == Last`, it's also true for [`Position::Only`]
73+ pub fn is_last ( self ) -> bool {
74+ self == Self :: Last || self == Self :: Only
75+ }
76+ }
77+
6478impl < I : Iterator > Iterator for WithPosition < I > {
6579 type Item = ( Position , I :: Item ) ;
6680
You can’t perform that action at this time.
0 commit comments