@@ -112,7 +112,10 @@ where
112
112
fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
113
113
f. debug_struct ( "Usage" )
114
114
. field ( "data" , & self . data )
115
- . field ( "_phantom" , & format ! ( "PhantomData<{}>" , std:: any:: type_name:: <U >( ) ) )
115
+ . field (
116
+ "_phantom" ,
117
+ & format ! ( "PhantomData<{}>" , std:: any:: type_name:: <U >( ) ) ,
118
+ )
116
119
. finish ( )
117
120
}
118
121
}
@@ -129,11 +132,7 @@ where
129
132
}
130
133
}
131
134
132
- impl < U , T > Copy for Usage < U , T >
133
- where
134
- T : Copy ,
135
- {
136
- }
135
+ impl < U , T > Copy for Usage < U , T > where T : Copy { }
137
136
138
137
impl < U , T > Clone for Usage < U , T >
139
138
where
@@ -199,12 +198,31 @@ impl<U, T> From<T> for Usage<U, T> {
199
198
}
200
199
}
201
200
202
- impl < U , T , V > FromIterator < V > for Usage < U , T > where T : FromIterator < V > {
201
+ impl < U , T , V > FromIterator < V > for Usage < U , T >
202
+ where
203
+ T : FromIterator < V > ,
204
+ {
203
205
fn from_iter < I : IntoIterator < Item = V > > ( iter : I ) -> Self {
204
206
U :: as_usage ( iter. into_iter ( ) . collect ( ) )
205
207
}
206
208
}
207
209
210
+ #[ cfg( feature = "rayon" ) ]
211
+ mod rayon_impl {
212
+ use super :: * ;
213
+ use rayon:: iter:: { ParallelIterator , FromParallelIterator } ;
214
+
215
+ impl < U , T , V > FromParallelIterator < V > for Usage < U , T >
216
+ where
217
+ T : FromParallelIterator < V > ,
218
+ V : Send ,
219
+ {
220
+ fn from_par_iter < I : rayon:: iter:: IntoParallelIterator < Item = V > > ( par_iter : I ) -> Self {
221
+ U :: as_usage ( par_iter. into_par_iter ( ) . collect ( ) )
222
+ }
223
+ }
224
+ }
225
+
208
226
// Data access traits
209
227
impl < U , T > Borrow < T > for Usage < U , T > {
210
228
fn borrow ( & self ) -> & T {
0 commit comments