From 901dc2c15e08b6527f084c211d8d93448d997155 Mon Sep 17 00:00:00 2001 From: Shamir Khodzha Date: Sat, 11 Jan 2014 14:13:06 +0400 Subject: [PATCH] added empty() to Peekable --- src/libstd/iter.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/libstd/iter.rs b/src/libstd/iter.rs index 2056f8b33ec1..b9d7ee82851e 100644 --- a/src/libstd/iter.rs +++ b/src/libstd/iter.rs @@ -1,4 +1,4 @@ -// Copyright 2013 The Rust Project Developers. See the COPYRIGHT +// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // @@ -1362,6 +1362,12 @@ impl<'a, A, T: Iterator> Peekable { None => None, } } + + /// Check whether peekable iterator is empty or not. + #[inline] + pub fn empty(&mut self) -> bool { + self.peek().is_some() + } } /// An iterator which rejects elements while `predicate` is true @@ -2923,4 +2929,12 @@ mod tests { ys.mut_iter().reverse_(); assert_eq!(ys, [5, 4, 3, 2, 1]); } + + fn test_peekable_empty() { + let a = [1]; + let mut it = a.iter().peekable(); + assert!( !it.empty() ); + it.next(); + assert!( it.empty() ); + } }