Skip to content

Commit c7bf86a

Browse files
committed
Fix remove use of fuse at tuple_windows
1 parent 8cf7b7d commit c7bf86a

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

src/tuple_impl.rs

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ pub struct TupleWindows<I, T>
139139
where I: Iterator<Item = T::Item>,
140140
T: HomogeneousTuple
141141
{
142-
iter: Fuse<I>,
142+
iter: I,
143143
last: Option<T>,
144144
}
145145

@@ -151,7 +151,7 @@ pub fn tuple_windows<I, T>(iter: I) -> TupleWindows<I, T>
151151
{
152152
TupleWindows {
153153
last : None,
154-
iter : iter.fuse(),
154+
iter,
155155
}
156156
}
157157

@@ -166,25 +166,24 @@ impl<I, T> Iterator for TupleWindows<I, T>
166166
if T::num_items() == 1 {
167167
return T::collect_from_iter_no_buf(&mut self.iter)
168168
}
169-
if let Some(ref mut last) = self.last {
170-
if let Some(new) = self.iter.next() {
169+
if let Some(new) = self.iter.next() {
170+
if let Some(ref mut last) = self.last {
171171
last.left_shift_push(new);
172-
return Some(last.clone());
173-
}
174-
} else {
175-
use std::iter::once;
176-
if let Some(item) = self.iter.next() {
177-
let iter = once(item).chain(&mut self.iter);
172+
Some(last.clone())
173+
} else {
174+
use std::iter::once;
175+
let iter = once(new).chain(&mut self.iter);
178176
self.last = T::collect_from_iter_no_buf(iter);
179-
return self.last.clone();
177+
self.last.clone()
180178
}
179+
} else {
180+
None
181181
}
182-
None
183182
}
184183
}
185184

186185
impl<I, T> FusedIterator for TupleWindows<I, T>
187-
where I: Iterator<Item = T::Item>,
186+
where I: FusedIterator<Item = T::Item>,
188187
T: HomogeneousTuple + Clone,
189188
T::Item: Clone
190189
{}

0 commit comments

Comments
 (0)