diff --git a/src/adaptors/mod.rs b/src/adaptors/mod.rs index cf9642bc5..191d551da 100644 --- a/src/adaptors/mod.rs +++ b/src/adaptors/mod.rs @@ -280,10 +280,10 @@ where /// Put back a single value to the front of the iterator. /// - /// If a value is already in the put back slot, it is overwritten. + /// If a value is already in the put back slot, it is returned. #[inline] - pub fn put_back(&mut self, x: I::Item) { - self.top = Some(x); + pub fn put_back(&mut self, x: I::Item) -> Option { + self.top.replace(x) } } diff --git a/tests/quick.rs b/tests/quick.rs index b2982a6ef..e345c9813 100644 --- a/tests/quick.rs +++ b/tests/quick.rs @@ -882,7 +882,7 @@ quickcheck! { fn size_put_back(a: Vec, x: Option) -> bool { let mut it = put_back(a.into_iter()); if let Some(t) = x { - it.put_back(t) + it.put_back(t); } correct_size_hint(it) }