diff options
Diffstat (limited to 'src/delegate.rs')
-rw-r--r-- | src/delegate.rs | 57 |
1 files changed, 48 insertions, 9 deletions
diff --git a/src/delegate.rs b/src/delegate.rs index a537489..2a6e331 100644 --- a/src/delegate.rs +++ b/src/delegate.rs @@ -8,15 +8,6 @@ /// declared with an `inner` field. /// /// The implementation of `IntoParallelIterator` should be added separately. -/// -/// # Example -/// -/// ``` -/// delegate_iterator!{ -/// MyIntoIter<T, U> => (T, U), -/// impl<T: Ord + Send, U: Send> -/// } -/// ``` macro_rules! delegate_iterator { ($iter:ty => $item:ty , impl $( $args:tt )* @@ -68,3 +59,51 @@ macro_rules! delegate_indexed_iterator { } } } + +#[test] +fn unindexed_example() { + use crate::collections::btree_map::IntoIter; + use crate::iter::plumbing::*; + use crate::prelude::*; + + use std::collections::BTreeMap; + + struct MyIntoIter<T: Ord + Send, U: Send> { + inner: IntoIter<T, U>, + } + + delegate_iterator! { + MyIntoIter<T, U> => (T, U), + impl<T: Ord + Send, U: Send> + } + + let map = BTreeMap::from([(1, 'a'), (2, 'b'), (3, 'c')]); + let iter = MyIntoIter { + inner: map.into_par_iter(), + }; + let vec: Vec<_> = iter.map(|(k, _)| k).collect(); + assert_eq!(vec, &[1, 2, 3]); +} + +#[test] +fn indexed_example() { + use crate::iter::plumbing::*; + use crate::prelude::*; + use crate::vec::IntoIter; + + struct MyIntoIter<T: Send> { + inner: IntoIter<T>, + } + + delegate_indexed_iterator! { + MyIntoIter<T> => T, + impl<T: Send> + } + + let iter = MyIntoIter { + inner: vec![1, 2, 3].into_par_iter(), + }; + let mut vec = vec![]; + iter.collect_into_vec(&mut vec); + assert_eq!(vec, &[1, 2, 3]); +} |