Skip to content

Commit 2b32b31

Browse files
committed
rewrite iterator Default tests as doctests
1 parent 05c7330 commit 2b32b31

File tree

17 files changed

+174
-40
lines changed

17 files changed

+174
-40
lines changed

library/alloc/src/collections/binary_heap/mod.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1470,6 +1470,13 @@ impl<T> FusedIterator for IntoIter<T> {}
14701470

14711471
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
14721472
impl<T> Default for IntoIter<T> {
1473+
/// Creates an empty `binary_heap::IntoIter`.
1474+
///
1475+
/// ```
1476+
/// # use std::collections::binary_heap;
1477+
/// let iter: binary_heap::IntoIter<u8> = Default::default();
1478+
/// assert_eq!(iter.len(), 0);
1479+
/// ```
14731480
fn default() -> Self {
14741481
IntoIter { iter: Default::default() }
14751482
}

library/alloc/src/collections/btree/map.rs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,13 @@ impl<K: fmt::Debug, V: fmt::Debug> fmt::Debug for Iter<'_, K, V> {
364364

365365
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
366366
impl<'a, K: 'a, V: 'a> Default for Iter<'a, K, V> {
367+
/// Creates an empty `btree_map::Iter`.
368+
///
369+
/// ```
370+
/// # use std::collections::btree_map;
371+
/// let iter: btree_map::Iter<'_, u8, u8> = Default::default();
372+
/// assert_eq!(iter.len(), 0);
373+
/// ```
367374
fn default() -> Self {
368375
Iter { range: Default::default(), length: 0 }
369376
}
@@ -395,6 +402,13 @@ impl<K: fmt::Debug, V: fmt::Debug> fmt::Debug for IterMut<'_, K, V> {
395402

396403
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
397404
impl<'a, K: 'a, V: 'a> Default for IterMut<'a, K, V> {
405+
/// Creates an empty `btree_map::IterMut`.
406+
///
407+
/// ```
408+
/// # use std::collections::btree_map;
409+
/// let iter: btree_map::IterMut<'_, u8, u8> = Default::default();
410+
/// assert_eq!(iter.len(), 0);
411+
/// ```
398412
fn default() -> Self {
399413
IterMut { range: Default::default(), length: 0, _marker: PhantomData {} }
400414
}
@@ -437,6 +451,13 @@ impl<K: Debug, V: Debug, A: Allocator + Clone> Debug for IntoIter<K, V, A> {
437451

438452
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
439453
impl<K, V> Default for IntoIter<K, V> {
454+
/// Creates an empty `btree_map::IntoIter`.
455+
///
456+
/// ```
457+
/// # use std::collections::btree_map;
458+
/// let iter: btree_map::IntoIter<u8, u8> = Default::default();
459+
/// assert_eq!(iter.len(), 0);
460+
/// ```
440461
fn default() -> Self {
441462
IntoIter { range: Default::default(), length: 0, alloc: Global }
442463
}
@@ -1791,6 +1812,13 @@ impl<K, V> Clone for Keys<'_, K, V> {
17911812

17921813
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
17931814
impl<K, V> Default for Keys<'_, K, V> {
1815+
/// Creates an empty `btree_map::Keys`.
1816+
///
1817+
/// ```
1818+
/// # use std::collections::btree_map;
1819+
/// let iter: btree_map::Keys<'_, u8, u8> = Default::default();
1820+
/// assert_eq!(iter.len(), 0);
1821+
/// ```
17941822
fn default() -> Self {
17951823
Keys { inner: Default::default() }
17961824
}
@@ -1839,6 +1867,13 @@ impl<K, V> Clone for Values<'_, K, V> {
18391867

18401868
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
18411869
impl<K, V> Default for Values<'_, K, V> {
1870+
/// Creates an empty `btree_map::Values`.
1871+
///
1872+
/// ```
1873+
/// # use std::collections::btree_map;
1874+
/// let iter: btree_map::Values<'_, u8, u8> = Default::default();
1875+
/// assert_eq!(iter.len(), 0);
1876+
/// ```
18421877
fn default() -> Self {
18431878
Values { inner: Default::default() }
18441879
}
@@ -1982,6 +2017,13 @@ impl<'a, K, V> Iterator for Range<'a, K, V> {
19822017

19832018
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
19842019
impl<K, V> Default for Range<'_, K, V> {
2020+
/// Creates an empty `btree_map::Range`.
2021+
///
2022+
/// ```
2023+
/// # use std::collections::btree_map;
2024+
/// let iter: btree_map::Range<'_, u8, u8> = Default::default();
2025+
/// assert_eq!(iter.count(), 0);
2026+
/// ```
19852027
fn default() -> Self {
19862028
Range { inner: Default::default() }
19872029
}
@@ -2065,6 +2107,13 @@ impl<K, V, A: Allocator + Clone> FusedIterator for IntoKeys<K, V, A> {}
20652107

20662108
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
20672109
impl<K, V> Default for IntoKeys<K, V> {
2110+
/// Creates an empty `btree_map::IntoKeys`.
2111+
///
2112+
/// ```
2113+
/// # use std::collections::btree_map;
2114+
/// let iter: btree_map::IntoKeys<u8, u8> = Default::default();
2115+
/// assert_eq!(iter.len(), 0);
2116+
/// ```
20682117
fn default() -> Self {
20692118
IntoKeys { inner: Default::default() }
20702119
}
@@ -2106,6 +2155,13 @@ impl<K, V, A: Allocator + Clone> FusedIterator for IntoValues<K, V, A> {}
21062155

21072156
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
21082157
impl<K, V> Default for IntoValues<K, V> {
2158+
/// Creates an empty `btree_map::IntoValues`.
2159+
///
2160+
/// ```
2161+
/// # use std::collections::btree_map;
2162+
/// let iter: btree_map::IntoValues<u8, u8> = Default::default();
2163+
/// assert_eq!(iter.len(), 0);
2164+
/// ```
21092165
fn default() -> Self {
21102166
IntoValues { inner: Default::default() }
21112167
}

library/alloc/src/collections/btree/map/tests.rs

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -563,22 +563,6 @@ fn test_iter_min_max() {
563563
a.check();
564564
}
565565

566-
#[test]
567-
fn test_iters_default() {
568-
let iter: Keys<'_, u8, u8> = Keys::default();
569-
assert_eq!(iter.len(), 0);
570-
let iter: Values<'_, u8, u8> = Values::default();
571-
assert_eq!(iter.len(), 0);
572-
let iter: Range<'_, u8, u8> = Range::default();
573-
assert_eq!(iter.count(), 0);
574-
let iter: IntoIter<u8, u8> = IntoIter::default();
575-
assert_eq!(iter.len(), 0);
576-
let iter: IntoKeys<u8, u8> = IntoKeys::default();
577-
assert_eq!(iter.len(), 0);
578-
let iter: IntoValues<u8, u8> = IntoValues::default();
579-
assert_eq!(iter.len(), 0);
580-
}
581-
582566
fn range_keys(map: &BTreeMap<i32, i32>, range: impl RangeBounds<i32>) -> Vec<i32> {
583567
Vec::from_iter(map.range(range).map(|(&k, &v)| {
584568
assert_eq!(k, v);

library/alloc/src/collections/btree/set.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1547,6 +1547,13 @@ impl<T, A: Allocator + Clone> Iterator for IntoIter<T, A> {
15471547

15481548
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
15491549
impl<T> Default for Iter<'_, T> {
1550+
/// Creates an empty `btree_set::Iter`.
1551+
///
1552+
/// ```
1553+
/// # use std::collections::btree_set;
1554+
/// let iter: btree_set::Iter<'_, u8> = Default::default();
1555+
/// assert_eq!(iter.len(), 0);
1556+
/// ```
15501557
fn default() -> Self {
15511558
Iter { iter: Default::default() }
15521559
}
@@ -1570,6 +1577,13 @@ impl<T, A: Allocator + Clone> FusedIterator for IntoIter<T, A> {}
15701577

15711578
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
15721579
impl<T> Default for IntoIter<T> {
1580+
/// Creates an empty `btree_set::IntoIter`.
1581+
///
1582+
/// ```
1583+
/// # use std::collections::btree_set;
1584+
/// let iter: btree_set::IntoIter<u8> = Default::default();
1585+
/// assert_eq!(iter.len(), 0);
1586+
/// ```
15731587
fn default() -> Self {
15741588
IntoIter { iter: Default::default() }
15751589
}
@@ -1615,6 +1629,13 @@ impl<T> FusedIterator for Range<'_, T> {}
16151629

16161630
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
16171631
impl<T> Default for Range<'_, T> {
1632+
/// Creates an empty `btree_set::Range`.
1633+
///
1634+
/// ```
1635+
/// # use std::collections::btree_set;
1636+
/// let iter: btree_set::Range<'_, u8> = Default::default();
1637+
/// assert_eq!(iter.count(), 0);
1638+
/// ```
16181639
fn default() -> Self {
16191640
Range { iter: Default::default() }
16201641
}

library/alloc/src/collections/linked_list.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,6 +1077,13 @@ impl<T> FusedIterator for Iter<'_, T> {}
10771077

10781078
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
10791079
impl<T> Default for Iter<'_, T> {
1080+
/// Creates an empty `linked_list::Iter`.
1081+
///
1082+
/// ```
1083+
/// # use std::collections::linked_list;
1084+
/// let iter: linked_list::Iter<'_, u8> = Default::default();
1085+
/// assert_eq!(iter.len(), 0);
1086+
/// ```
10801087
fn default() -> Self {
10811088
Iter { head: None, tail: None, len: 0, marker: Default::default() }
10821089
}
@@ -1824,6 +1831,13 @@ impl<T> FusedIterator for IntoIter<T> {}
18241831

18251832
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
18261833
impl<T> Default for IntoIter<T> {
1834+
/// Creates an empty `linked_list::IntoIter`.
1835+
///
1836+
/// ```
1837+
/// # use std::collections::linked_list;
1838+
/// let iter: linked_list::IntoIter<u8> = Default::default();
1839+
/// assert_eq!(iter.len(), 0);
1840+
/// ```
18271841
fn default() -> Self {
18281842
LinkedList::new().into_iter()
18291843
}

library/alloc/src/collections/linked_list/tests.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -172,12 +172,6 @@ fn test_iterator() {
172172
assert_eq!(it.next(), None);
173173
}
174174

175-
#[test]
176-
fn test_default() {
177-
let iter: IntoIter<u8> = Default::default();
178-
assert_eq!(iter.len(), 0);
179-
}
180-
181175
#[test]
182176
fn test_iterator_clone() {
183177
let mut n = LinkedList::new();

library/alloc/src/vec/into_iter.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,14 @@ unsafe impl<T, A: Allocator> TrustedLen for IntoIter<T, A> {}
349349

350350
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
351351
impl<T> Default for IntoIter<T> {
352+
/// Creates an empty `vec::IntoIter`.
353+
///
354+
/// ```
355+
/// # use std::vec;
356+
/// let iter: vec::IntoIter<u8> = Default::default();
357+
/// assert_eq!(iter.len(), 0);
358+
/// assert_eq!(iter.as_slice(), &[]);
359+
/// ```
352360
fn default() -> Self {
353361
super::Vec::new().into_iter()
354362
}

library/alloc/tests/vec.rs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use core::alloc::{Allocator, Layout};
2-
use core::assert_eq;
3-
use core::iter::{ExactSizeIterator, IntoIterator};
2+
use core::iter::IntoIterator;
43
use core::ptr::NonNull;
54
use std::alloc::System;
65
use std::assert_matches::assert_matches;
@@ -1036,13 +1035,6 @@ fn test_into_iter_clone() {
10361035
assert_eq!(it.next(), None);
10371036
}
10381037

1039-
#[test]
1040-
fn test_into_iter_default() {
1041-
let iter: IntoIter<u8> = Default::default();
1042-
assert_eq!(iter.len(), 0);
1043-
assert_eq!(iter.as_slice(), &[]);
1044-
}
1045-
10461038
#[test]
10471039
fn test_into_iter_leak() {
10481040
static mut DROPS: i32 = 0;

library/core/src/iter/adapters/chain.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,21 @@ where
288288
A: Iterator + Default,
289289
B: Iterator + Default,
290290
{
291+
/// Creates a `Chain` from the default values for `A` and `B`.
292+
///
293+
/// ```
294+
/// # use core::iter::Chain;
295+
/// # use core::slice;
296+
/// # use std::collections::{btree_set, BTreeSet};
297+
/// # use std::mem;
298+
/// struct Foo<'a>(Chain<slice::Iter<'a, u8>, btree_set::Iter<'a, u8>>);
299+
///
300+
/// let set = BTreeSet::<u8>::new();
301+
/// let slice: &[u8] = &[];
302+
/// let mut foo = Foo(slice.iter().chain(set.iter()));
303+
///
304+
/// // take requires `Default`
305+
/// let _: Chain<_, _> = mem::take(&mut foo.0);
291306
fn default() -> Self {
292307
Chain::new(Default::default(), Default::default())
293308
}

library/core/src/iter/adapters/cloned.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,13 @@ where
160160
I: Default + Iterator<Item = &'a T>,
161161
T: Clone,
162162
{
163+
/// Creates a `Cloned` iterator from the default value of `I`
164+
/// ```
165+
/// # use core::slice;
166+
/// # use core::iter::Cloned;
167+
/// let iter: Cloned<slice::Iter<'_, u8>> = Default::default();
168+
/// assert_eq!(iter.len(), 0);
169+
/// ```
163170
fn default() -> Self {
164171
Self::new(Default::default())
165172
}

library/core/src/iter/adapters/copied.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,13 @@ where
247247
I: Default + Iterator<Item = &'a T>,
248248
T: Copy,
249249
{
250+
/// Creates a `Copied` iterator from the default value of `I`
251+
/// ```
252+
/// # use core::slice;
253+
/// # use core::iter::Copied;
254+
/// let iter: Copied<slice::Iter<'_, u8>> = Default::default();
255+
/// assert_eq!(iter.len(), 0);
256+
/// ```
250257
fn default() -> Self {
251258
Self::new(Default::default())
252259
}

library/core/src/iter/adapters/enumerate.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,13 @@ impl<I> Default for Enumerate<I>
270270
where
271271
I: Iterator + Default,
272272
{
273+
/// Creates an `Enumerate` iterator from the default value of `I`
274+
/// ```
275+
/// # use core::slice;
276+
/// # use std::iter::Enumerate;
277+
/// let iter: Enumerate<slice::Iter<'_, u8>> = Default::default();
278+
/// assert_eq!(iter.len(), 0);
279+
/// ```
273280
fn default() -> Self {
274281
Enumerate::new(Default::default())
275282
}

library/core/src/iter/adapters/flatten.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,14 @@ where
308308
I: Iterator + Default,
309309
<I as Iterator>::Item: IntoIterator,
310310
{
311+
/// Creates a `Flatten` iterator from the default value of `I`.
312+
///
313+
/// ```
314+
/// # use core::slice;
315+
/// # use std::iter::Flatten;
316+
/// let iter: Flatten<slice::Iter<'_, [u8; 4]>> = Default::default();
317+
/// assert_eq!(iter.count(), 0);
318+
/// ```
311319
fn default() -> Self {
312320
Flatten::new(Default::default())
313321
}

library/core/src/iter/adapters/fuse.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,14 @@ where
183183

184184
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
185185
impl<I: Default> Default for Fuse<I> {
186+
/// Creates a `Fuse` iterator from the default value of `I`.
187+
///
188+
/// ```
189+
/// # use core::slice;
190+
/// # use std::iter::Fuse;
191+
/// let iter: Fuse<slice::Iter<'_, u8>> = Default::default();
192+
/// assert_eq!(iter.len(), 0);
193+
/// ```
186194
fn default() -> Self {
187195
Fuse { iter: Default::default() }
188196
}

library/core/src/iter/adapters/rev.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,13 @@ impl<I> Default for Rev<I>
141141
where
142142
I: Default + Iterator,
143143
{
144+
/// Creates a `Rev` iterator from the default value of `I`
145+
/// ```
146+
/// # use core::slice;
147+
/// # use core::iter::Rev;
148+
/// let iter: Rev<slice::Iter<'_, u8>> = Default::default();
149+
/// assert_eq!(iter.len(), 0);
150+
/// ```
144151
fn default() -> Self {
145152
Rev::new(Default::default())
146153
}

library/core/src/slice/iter/macros.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,13 @@ macro_rules! iterator {
396396

397397
#[stable(feature = "default_iters", since = "CURRENT_RUSTC_VERSION")]
398398
impl<T> Default for $name<'_, T> {
399+
/// Creates an empty slice iterator.
400+
///
401+
/// ```
402+
#[doc = concat!("# use core::slice::", stringify!($name), ";")]
403+
#[doc = concat!("let iter: ", stringify!($name<'_, u8>), " = Default::default();")]
404+
/// assert_eq!(iter.len(), 0);
405+
/// ```
399406
fn default() -> Self {
400407
(& $( $mut_ )? []).into_iter()
401408
}

0 commit comments

Comments
 (0)