We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 5a3aa2f commit 74cde12Copy full SHA for 74cde12
src/libcollections/lib.rs
@@ -36,6 +36,7 @@
36
#![cfg_attr(not(test), feature(char_escape_debug))]
37
#![feature(core_intrinsics)]
38
#![feature(dropck_parametricity)]
39
+#![feature(exact_size_is_empty)]
40
#![feature(fmt_internals)]
41
#![feature(fused)]
42
#![feature(heap_api)]
src/libcollections/vec.rs
@@ -1988,7 +1988,11 @@ impl<T> DoubleEndedIterator for IntoIter<T> {
1988
}
1989
1990
#[stable(feature = "rust1", since = "1.0.0")]
1991
-impl<T> ExactSizeIterator for IntoIter<T> {}
+impl<T> ExactSizeIterator for IntoIter<T> {
1992
+ fn is_empty(&self) -> bool {
1993
+ self.ptr == self.end
1994
+ }
1995
+}
1996
1997
#[unstable(feature = "fused", issue = "35602")]
1998
impl<T> FusedIterator for IntoIter<T> {}
@@ -2082,7 +2086,11 @@ impl<'a, T> Drop for Drain<'a, T> {
2082
2086
2083
2087
2084
2088
#[stable(feature = "drain", since = "1.6.0")]
2085
-impl<'a, T> ExactSizeIterator for Drain<'a, T> {}
2089
+impl<'a, T> ExactSizeIterator for Drain<'a, T> {
2090
2091
+ self.iter.is_empty()
2092
2093
2094
2095
2096
impl<'a, T> FusedIterator for Drain<'a, T> {}
src/libcollectionstest/lib.rs
@@ -18,6 +18,7 @@
18
#![feature(const_fn)]
19
#![feature(dedup_by)]
20
#![feature(enumset)]
21
22
#![feature(pattern)]
23
#![feature(rand)]
24
#![feature(repeat_str)]
src/libcollectionstest/slice.rs
@@ -633,6 +633,16 @@ fn test_iter_clone() {
633
assert_eq!(it.next(), jt.next());
634
635
636
+#[test]
637
+fn test_iter_is_empty() {
638
+ let xs = [1, 2, 5, 10, 11];
639
+ for i in 0..xs.len() {
640
+ for j in i..xs.len() {
641
+ assert_eq!(xs[i..j].iter().is_empty(), xs[i..j].is_empty());
642
643
644
645
+
646
#[test]
647
fn test_mut_iterator() {
648
let mut xs = [1, 2, 3, 4, 5];
src/libcore/slice.rs
@@ -983,7 +983,11 @@ impl<'a, T> Iter<'a, T> {
983
iterator!{struct Iter -> *const T, &'a T}
984
985
986
-impl<'a, T> ExactSizeIterator for Iter<'a, T> {}
+impl<'a, T> ExactSizeIterator for Iter<'a, T> {
987
988
989
990
991
992
993
impl<'a, T> FusedIterator for Iter<'a, T> {}
@@ -1107,7 +1111,11 @@ impl<'a, T> IterMut<'a, T> {
1107
1111
iterator!{struct IterMut -> *mut T, &'a mut T}
1108
1112
1109
1113
1110
-impl<'a, T> ExactSizeIterator for IterMut<'a, T> {}
1114
+impl<'a, T> ExactSizeIterator for IterMut<'a, T> {
1115
1116
1117
1118
1119
1120
1121
impl<'a, T> FusedIterator for IterMut<'a, T> {}
0 commit comments