@@ -43,42 +43,33 @@ use current_num_threads;
43
43
///
44
44
/// assert_eq!(&*output, &["one!", "three!", "two!"]);
45
45
/// ```
46
- pub trait ParallelBridge {
47
- /// What is the type of the output `ParallelIterator`?
48
- type Iter : ParallelIterator < Item = Self :: Item > ;
49
-
50
- /// What is the `Item` of the output `ParallelIterator`?
51
- type Item : Send ;
52
-
53
- /// Convert this type to a `ParallelIterator`.
54
- fn par_bridge ( self ) -> Self :: Iter ;
46
+ pub trait ParallelBridge : Sized {
47
+ /// Create a bridge from this type to a `ParallelIterator`.
48
+ fn par_bridge ( self ) -> IterBridge < Self > ;
55
49
}
56
50
57
51
impl < T : Iterator + Send > ParallelBridge for T
58
52
where T :: Item : Send
59
53
{
60
- type Iter = IterParallel < T > ;
61
- type Item = T :: Item ;
62
-
63
- fn par_bridge ( self ) -> Self :: Iter {
64
- IterParallel {
54
+ fn par_bridge ( self ) -> IterBridge < Self > {
55
+ IterBridge {
65
56
iter : self ,
66
57
}
67
58
}
68
59
}
69
60
70
- /// `IterParallel ` is a parallel iterator that wraps a sequential iterator.
61
+ /// `IterBridge ` is a parallel iterator that wraps a sequential iterator.
71
62
///
72
63
/// This type is created when using the `par_bridge` method on `ParallelBridge`. See the
73
64
/// [`ParallelBridge`] documentation for details.
74
65
///
75
66
/// [`ParallelBridge`]: trait.ParallelBridge.html
76
67
#[ derive( Debug ) ]
77
- pub struct IterParallel < Iter > {
68
+ pub struct IterBridge < Iter > {
78
69
iter : Iter ,
79
70
}
80
71
81
- impl < Iter : Iterator + Send > ParallelIterator for IterParallel < Iter >
72
+ impl < Iter : Iterator + Send > ParallelIterator for IterBridge < Iter >
82
73
where Iter :: Item : Send
83
74
{
84
75
type Item = Iter :: Item ;
0 commit comments