Skip to content

Commit a866566

Browse files
bors[bot]cuviper
andauthored
Merge #935
935: Convert delegate doctest to unit tests r=cuviper a=cuviper The documented example wasn't functional, and this broke on nightly since rust-lang/rust#96630. We can't actually doctest a nonexported macro, but a unit test will do. Co-authored-by: Josh Stone <[email protected]>
2 parents 9dc52d7 + 36bd58a commit a866566

File tree

1 file changed

+48
-9
lines changed

1 file changed

+48
-9
lines changed

src/delegate.rs

Lines changed: 48 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,6 @@
88
/// declared with an `inner` field.
99
///
1010
/// The implementation of `IntoParallelIterator` should be added separately.
11-
///
12-
/// # Example
13-
///
14-
/// ```
15-
/// delegate_iterator!{
16-
/// MyIntoIter<T, U> => (T, U),
17-
/// impl<T: Ord + Send, U: Send>
18-
/// }
19-
/// ```
2011
macro_rules! delegate_iterator {
2112
($iter:ty => $item:ty ,
2213
impl $( $args:tt )*
@@ -68,3 +59,51 @@ macro_rules! delegate_indexed_iterator {
6859
}
6960
}
7061
}
62+
63+
#[test]
64+
fn unindexed_example() {
65+
use crate::collections::btree_map::IntoIter;
66+
use crate::iter::plumbing::*;
67+
use crate::prelude::*;
68+
69+
use std::collections::BTreeMap;
70+
71+
struct MyIntoIter<T: Ord + Send, U: Send> {
72+
inner: IntoIter<T, U>,
73+
}
74+
75+
delegate_iterator! {
76+
MyIntoIter<T, U> => (T, U),
77+
impl<T: Ord + Send, U: Send>
78+
}
79+
80+
let map = BTreeMap::from([(1, 'a'), (2, 'b'), (3, 'c')]);
81+
let iter = MyIntoIter {
82+
inner: map.into_par_iter(),
83+
};
84+
let vec: Vec<_> = iter.map(|(k, _)| k).collect();
85+
assert_eq!(vec, &[1, 2, 3]);
86+
}
87+
88+
#[test]
89+
fn indexed_example() {
90+
use crate::iter::plumbing::*;
91+
use crate::prelude::*;
92+
use crate::vec::IntoIter;
93+
94+
struct MyIntoIter<T: Send> {
95+
inner: IntoIter<T>,
96+
}
97+
98+
delegate_indexed_iterator! {
99+
MyIntoIter<T> => T,
100+
impl<T: Send>
101+
}
102+
103+
let iter = MyIntoIter {
104+
inner: vec![1, 2, 3].into_par_iter(),
105+
};
106+
let mut vec = vec![];
107+
iter.collect_into_vec(&mut vec);
108+
assert_eq!(vec, &[1, 2, 3]);
109+
}

0 commit comments

Comments
 (0)