Skip to content

Commit

Permalink
Merge remote-tracking branch 'ema-fox/intersperse'
Browse files Browse the repository at this point in the history
* ema-fox/intersperse:
  tests/stride.rs: remove "extern crate debug"
  Simplify intersperse iterator
  • Loading branch information
root committed Oct 24, 2014
2 parents 2caf3d7 + 0de2767 commit dcfaaf3
Showing 1 changed file with 5 additions and 9 deletions.
14 changes: 5 additions & 9 deletions src/intersperse.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,14 @@ pub struct Intersperse<A, I> {
element: A,
iter: I,
peek: Option<A>,
insert: bool,
}

impl<A, I: Iterator<A>> Intersperse<A, I>
{
/// Create a new Intersperse iterator
pub fn new(mut iter: I, elt: A) -> Intersperse<A, I>
{
Intersperse{peek: iter.next(), iter: iter, element: elt, insert: false}
Intersperse{peek: iter.next(), iter: iter, element: elt}
}
}

Expand All @@ -27,18 +26,15 @@ Iterator<A> for Intersperse<A, I>
#[inline]
fn next(&mut self) -> Option<A>
{
if self.insert {
if self.peek.is_some() {
self.peek.take()
} else {
self.peek = self.iter.next();
if self.peek.is_some() {
self.insert = false;
Some(self.element.clone())
} else {
None
}
} else {
let elt = self.peek.take();
self.peek = self.iter.next();
self.insert = true;
elt
}
}

Expand Down

0 comments on commit dcfaaf3

Please sign in to comment.