@@ -34,7 +34,7 @@ pub trait WasmArgs {
3434 // required for closure linking
3535 unsafe fn pop_from_stack ( stack : * mut u64 ) -> Self ;
3636 #[ doc( hidden) ]
37- fn validate_types ( types : & [ ffi:: M3ValueType :: Type ] ) -> bool ;
37+ fn validate_types ( types : impl Iterator < Item = ffi:: M3ValueType :: Type > ) -> bool ;
3838 #[ doc( hidden) ]
3939 fn sealed_ ( ) -> private:: Seal ;
4040 #[ doc( hidden) ]
@@ -198,8 +198,8 @@ impl WasmArgs for () {
198198 #[ doc( hidden) ]
199199 unsafe fn pop_from_stack ( _: * mut u64 ) -> Self { }
200200 #[ 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 ( )
203203 }
204204 #[ doc( hidden) ]
205205 fn sealed_ ( ) -> private:: Seal {
@@ -227,8 +227,9 @@ where
227227 WasmType :: pop_from_stack ( stack)
228228 }
229229 #[ 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 ( )
232233 }
233234 #[ doc( hidden) ]
234235 fn sealed_ ( ) -> private:: Seal {
@@ -278,12 +279,11 @@ macro_rules! args_impl {
278279 ) * )
279280 }
280281 #[ 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 {
283283 $(
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 ) &&
285285 ) *
286- ty_iter . next( ) . is_none( )
286+ types . next( ) . is_none( )
287287 }
288288 #[ doc( hidden) ]
289289 fn sealed_( ) -> private:: Seal { private:: Seal }
@@ -309,53 +309,53 @@ mod tests {
309309 use super :: * ;
310310 #[ test]
311311 fn test_validate_types_single ( ) {
312- assert ! ( f64 :: validate_types( & [
312+ assert ! ( f64 :: validate_types( [
313313 ffi:: M3ValueType :: c_m3Type_f64,
314- ] ) ) ;
314+ ] . iter ( ) . cloned ( ) ) ) ;
315315 }
316316
317317 #[ test]
318318 fn test_validate_types_single_fail ( ) {
319- assert ! ( !f32 :: validate_types( & [
319+ assert ! ( !f32 :: validate_types( [
320320 ffi:: M3ValueType :: c_m3Type_f64,
321- ] ) ) ;
321+ ] . iter ( ) . cloned ( ) ) ) ;
322322 }
323323
324324 #[ test]
325325 fn test_validate_types_double ( ) {
326- assert ! ( <( f64 , u32 ) >:: validate_types( & [
326+ assert ! ( <( f64 , u32 ) >:: validate_types( [
327327 ffi:: M3ValueType :: c_m3Type_f64,
328328 ffi:: M3ValueType :: c_m3Type_i32,
329- ] ) ) ;
329+ ] . iter ( ) . cloned ( ) ) ) ;
330330 }
331331
332332 #[ test]
333333 fn test_validate_types_double_fail ( ) {
334- assert ! ( !<( f32 , u64 ) >:: validate_types( & [
334+ assert ! ( !<( f32 , u64 ) >:: validate_types( [
335335 ffi:: M3ValueType :: c_m3Type_i64,
336336 ffi:: M3ValueType :: c_m3Type_f32,
337- ] ) ) ;
337+ ] . iter ( ) . cloned ( ) ) ) ;
338338 }
339339
340340 #[ test]
341341 fn test_validate_types_quintuple ( ) {
342- assert ! ( <( f64 , u32 , i32 , i64 , f32 ) >:: validate_types( & [
342+ assert ! ( <( f64 , u32 , i32 , i64 , f32 ) >:: validate_types( [
343343 ffi:: M3ValueType :: c_m3Type_f64,
344344 ffi:: M3ValueType :: c_m3Type_i32,
345345 ffi:: M3ValueType :: c_m3Type_i32,
346346 ffi:: M3ValueType :: c_m3Type_i64,
347347 ffi:: M3ValueType :: c_m3Type_f32,
348- ] ) ) ;
348+ ] . iter ( ) . cloned ( ) ) ) ;
349349 }
350350
351351 #[ test]
352352 fn test_validate_types_quintuple_fail ( ) {
353- assert ! ( !<( f64 , u32 , i32 , i64 , f32 ) >:: validate_types( & [
353+ assert ! ( !<( f64 , u32 , i32 , i64 , f32 ) >:: validate_types( [
354354 ffi:: M3ValueType :: c_m3Type_i32,
355355 ffi:: M3ValueType :: c_m3Type_i64,
356356 ffi:: M3ValueType :: c_m3Type_i32,
357357 ffi:: M3ValueType :: c_m3Type_f32,
358358 ffi:: M3ValueType :: c_m3Type_f64,
359- ] ) ) ;
359+ ] . iter ( ) . cloned ( ) ) ) ;
360360 }
361361}
0 commit comments