@@ -34,7 +34,7 @@ pub trait WasmArgs {
34
34
// required for closure linking
35
35
unsafe fn pop_from_stack ( stack : * mut u64 ) -> Self ;
36
36
#[ doc( hidden) ]
37
- fn validate_types ( types : & [ ffi:: M3ValueType :: Type ] ) -> bool ;
37
+ fn validate_types ( types : impl Iterator < Item = ffi:: M3ValueType :: Type > ) -> bool ;
38
38
#[ doc( hidden) ]
39
39
fn sealed_ ( ) -> private:: Seal ;
40
40
#[ doc( hidden) ]
@@ -198,8 +198,8 @@ impl WasmArgs for () {
198
198
#[ doc( hidden) ]
199
199
unsafe fn pop_from_stack ( _: * mut u64 ) -> Self { }
200
200
#[ doc( hidden) ]
201
- fn validate_types ( types : & [ ffi:: M3ValueType :: Type ] ) -> bool {
202
- types. is_empty ( )
201
+ fn validate_types ( mut types : impl Iterator < Item = ffi:: M3ValueType :: Type > ) -> bool {
202
+ types. next ( ) . is_none ( )
203
203
}
204
204
#[ doc( hidden) ]
205
205
fn sealed_ ( ) -> private:: Seal {
@@ -227,8 +227,9 @@ where
227
227
WasmType :: pop_from_stack ( stack)
228
228
}
229
229
#[ doc( hidden) ]
230
- fn validate_types ( types : & [ ffi:: M3ValueType :: Type ] ) -> bool {
231
- types. len ( ) == 1 && types[ 0 ] == T :: TYPE_INDEX
230
+ fn validate_types ( mut types : impl Iterator < Item =ffi:: M3ValueType :: Type > ) -> bool {
231
+ types. next ( ) . map ( |ty| ty == T :: TYPE_INDEX ) . unwrap_or ( false ) &&
232
+ types. next ( ) . is_none ( )
232
233
}
233
234
#[ doc( hidden) ]
234
235
fn sealed_ ( ) -> private:: Seal {
@@ -278,12 +279,11 @@ macro_rules! args_impl {
278
279
) * )
279
280
}
280
281
#[ doc( hidden) ]
281
- fn validate_types( types: & [ ffi:: M3ValueType :: Type ] ) -> bool {
282
- let mut ty_iter = types. iter( ) ;
282
+ fn validate_types( mut types: impl Iterator <Item =ffi:: M3ValueType :: Type >) -> bool {
283
283
$(
284
- ty_iter . next( ) . map( |& ty| ty == $types:: TYPE_INDEX ) . unwrap_or( false ) &&
284
+ types . next( ) . map( |ty| ty == $types:: TYPE_INDEX ) . unwrap_or( false ) &&
285
285
) *
286
- ty_iter . next( ) . is_none( )
286
+ types . next( ) . is_none( )
287
287
}
288
288
#[ doc( hidden) ]
289
289
fn sealed_( ) -> private:: Seal { private:: Seal }
@@ -309,53 +309,53 @@ mod tests {
309
309
use super :: * ;
310
310
#[ test]
311
311
fn test_validate_types_single ( ) {
312
- assert ! ( f64 :: validate_types( & [
312
+ assert ! ( f64 :: validate_types( [
313
313
ffi:: M3ValueType :: c_m3Type_f64,
314
- ] ) ) ;
314
+ ] . iter ( ) . cloned ( ) ) ) ;
315
315
}
316
316
317
317
#[ test]
318
318
fn test_validate_types_single_fail ( ) {
319
- assert ! ( !f32 :: validate_types( & [
319
+ assert ! ( !f32 :: validate_types( [
320
320
ffi:: M3ValueType :: c_m3Type_f64,
321
- ] ) ) ;
321
+ ] . iter ( ) . cloned ( ) ) ) ;
322
322
}
323
323
324
324
#[ test]
325
325
fn test_validate_types_double ( ) {
326
- assert ! ( <( f64 , u32 ) >:: validate_types( & [
326
+ assert ! ( <( f64 , u32 ) >:: validate_types( [
327
327
ffi:: M3ValueType :: c_m3Type_f64,
328
328
ffi:: M3ValueType :: c_m3Type_i32,
329
- ] ) ) ;
329
+ ] . iter ( ) . cloned ( ) ) ) ;
330
330
}
331
331
332
332
#[ test]
333
333
fn test_validate_types_double_fail ( ) {
334
- assert ! ( !<( f32 , u64 ) >:: validate_types( & [
334
+ assert ! ( !<( f32 , u64 ) >:: validate_types( [
335
335
ffi:: M3ValueType :: c_m3Type_i64,
336
336
ffi:: M3ValueType :: c_m3Type_f32,
337
- ] ) ) ;
337
+ ] . iter ( ) . cloned ( ) ) ) ;
338
338
}
339
339
340
340
#[ test]
341
341
fn test_validate_types_quintuple ( ) {
342
- assert ! ( <( f64 , u32 , i32 , i64 , f32 ) >:: validate_types( & [
342
+ assert ! ( <( f64 , u32 , i32 , i64 , f32 ) >:: validate_types( [
343
343
ffi:: M3ValueType :: c_m3Type_f64,
344
344
ffi:: M3ValueType :: c_m3Type_i32,
345
345
ffi:: M3ValueType :: c_m3Type_i32,
346
346
ffi:: M3ValueType :: c_m3Type_i64,
347
347
ffi:: M3ValueType :: c_m3Type_f32,
348
- ] ) ) ;
348
+ ] . iter ( ) . cloned ( ) ) ) ;
349
349
}
350
350
351
351
#[ test]
352
352
fn test_validate_types_quintuple_fail ( ) {
353
- assert ! ( !<( f64 , u32 , i32 , i64 , f32 ) >:: validate_types( & [
353
+ assert ! ( !<( f64 , u32 , i32 , i64 , f32 ) >:: validate_types( [
354
354
ffi:: M3ValueType :: c_m3Type_i32,
355
355
ffi:: M3ValueType :: c_m3Type_i64,
356
356
ffi:: M3ValueType :: c_m3Type_i32,
357
357
ffi:: M3ValueType :: c_m3Type_f32,
358
358
ffi:: M3ValueType :: c_m3Type_f64,
359
- ] ) ) ;
359
+ ] . iter ( ) . cloned ( ) ) ) ;
360
360
}
361
361
}
0 commit comments