@@ -186,59 +186,108 @@ macro_rules! tuple_conversion ({$length:expr,$(($refN:ident, $n:tt, $T:ident)),+
186
186
}
187
187
} ) ;
188
188
189
- tuple_conversion ! ( 1 , ( ref0, 0 , A ) ) ;
190
- tuple_conversion ! ( 2 , ( ref0, 0 , A ) , ( ref1, 1 , B ) ) ;
191
- tuple_conversion ! ( 3 , ( ref0, 0 , A ) , ( ref1, 1 , B ) , ( ref2, 2 , C ) ) ;
192
- tuple_conversion ! ( 4 , ( ref0, 0 , A ) , ( ref1, 1 , B ) , ( ref2, 2 , C ) , ( ref3, 3 , D ) ) ;
189
+ tuple_conversion ! ( 1 , ( ref0, 0 , T0 ) ) ;
190
+ tuple_conversion ! ( 2 , ( ref0, 0 , T0 ) , ( ref1, 1 , T1 ) ) ;
191
+ tuple_conversion ! ( 3 , ( ref0, 0 , T0 ) , ( ref1, 1 , T1 ) , ( ref2, 2 , T2 ) ) ;
192
+ tuple_conversion ! (
193
+ 4 ,
194
+ ( ref0, 0 , T0 ) ,
195
+ ( ref1, 1 , T1 ) ,
196
+ ( ref2, 2 , T2 ) ,
197
+ ( ref3, 3 , T3 )
198
+ ) ;
193
199
tuple_conversion ! (
194
200
5 ,
195
- ( ref0, 0 , A ) ,
196
- ( ref1, 1 , B ) ,
197
- ( ref2, 2 , C ) ,
198
- ( ref3, 3 , D ) ,
199
- ( ref4, 4 , E )
201
+ ( ref0, 0 , T0 ) ,
202
+ ( ref1, 1 , T1 ) ,
203
+ ( ref2, 2 , T2 ) ,
204
+ ( ref3, 3 , T3 ) ,
205
+ ( ref4, 4 , T4 )
200
206
) ;
201
207
tuple_conversion ! (
202
208
6 ,
203
- ( ref0, 0 , A ) ,
204
- ( ref1, 1 , B ) ,
205
- ( ref2, 2 , C ) ,
206
- ( ref3, 3 , D ) ,
207
- ( ref4, 4 , E ) ,
208
- ( ref5, 5 , F )
209
+ ( ref0, 0 , T0 ) ,
210
+ ( ref1, 1 , T1 ) ,
211
+ ( ref2, 2 , T2 ) ,
212
+ ( ref3, 3 , T3 ) ,
213
+ ( ref4, 4 , T4 ) ,
214
+ ( ref5, 5 , T5 )
209
215
) ;
210
216
tuple_conversion ! (
211
217
7 ,
212
- ( ref0, 0 , A ) ,
213
- ( ref1, 1 , B ) ,
214
- ( ref2, 2 , C ) ,
215
- ( ref3, 3 , D ) ,
216
- ( ref4, 4 , E ) ,
217
- ( ref5, 5 , F ) ,
218
- ( ref6, 6 , G )
218
+ ( ref0, 0 , T0 ) ,
219
+ ( ref1, 1 , T1 ) ,
220
+ ( ref2, 2 , T2 ) ,
221
+ ( ref3, 3 , T3 ) ,
222
+ ( ref4, 4 , T4 ) ,
223
+ ( ref5, 5 , T5 ) ,
224
+ ( ref6, 6 , T6 )
219
225
) ;
220
226
tuple_conversion ! (
221
227
8 ,
222
- ( ref0, 0 , A ) ,
223
- ( ref1, 1 , B ) ,
224
- ( ref2, 2 , C ) ,
225
- ( ref3, 3 , D ) ,
226
- ( ref4, 4 , E ) ,
227
- ( ref5, 5 , F ) ,
228
- ( ref6, 6 , G ) ,
229
- ( ref7, 7 , H )
228
+ ( ref0, 0 , T0 ) ,
229
+ ( ref1, 1 , T1 ) ,
230
+ ( ref2, 2 , T2 ) ,
231
+ ( ref3, 3 , T3 ) ,
232
+ ( ref4, 4 , T4 ) ,
233
+ ( ref5, 5 , T5 ) ,
234
+ ( ref6, 6 , T6 ) ,
235
+ ( ref7, 7 , T7 )
230
236
) ;
231
237
tuple_conversion ! (
232
238
9 ,
233
- ( ref0, 0 , A ) ,
234
- ( ref1, 1 , B ) ,
235
- ( ref2, 2 , C ) ,
236
- ( ref3, 3 , D ) ,
237
- ( ref4, 4 , E ) ,
238
- ( ref5, 5 , F ) ,
239
- ( ref6, 6 , G ) ,
240
- ( ref7, 7 , H ) ,
241
- ( ref8, 8 , I )
239
+ ( ref0, 0 , T0 ) ,
240
+ ( ref1, 1 , T1 ) ,
241
+ ( ref2, 2 , T2 ) ,
242
+ ( ref3, 3 , T3 ) ,
243
+ ( ref4, 4 , T4 ) ,
244
+ ( ref5, 5 , T5 ) ,
245
+ ( ref6, 6 , T6 ) ,
246
+ ( ref7, 7 , T7 ) ,
247
+ ( ref8, 8 , T8 )
248
+ ) ;
249
+ tuple_conversion ! (
250
+ 10 ,
251
+ ( ref0, 0 , T0 ) ,
252
+ ( ref1, 1 , T1 ) ,
253
+ ( ref2, 2 , T2 ) ,
254
+ ( ref3, 3 , T3 ) ,
255
+ ( ref4, 4 , T4 ) ,
256
+ ( ref5, 5 , T5 ) ,
257
+ ( ref6, 6 , T6 ) ,
258
+ ( ref7, 7 , T7 ) ,
259
+ ( ref8, 8 , T8 ) ,
260
+ ( ref9, 9 , T9 )
261
+ ) ;
262
+ tuple_conversion ! (
263
+ 11 ,
264
+ ( ref0, 0 , T0 ) ,
265
+ ( ref1, 1 , T1 ) ,
266
+ ( ref2, 2 , T2 ) ,
267
+ ( ref3, 3 , T3 ) ,
268
+ ( ref4, 4 , T4 ) ,
269
+ ( ref5, 5 , T5 ) ,
270
+ ( ref6, 6 , T6 ) ,
271
+ ( ref7, 7 , T7 ) ,
272
+ ( ref8, 8 , T8 ) ,
273
+ ( ref9, 9 , T9 ) ,
274
+ ( ref10, 10 , T10 )
275
+ ) ;
276
+
277
+ tuple_conversion ! (
278
+ 12 ,
279
+ ( ref0, 0 , T0 ) ,
280
+ ( ref1, 1 , T1 ) ,
281
+ ( ref2, 2 , T2 ) ,
282
+ ( ref3, 3 , T3 ) ,
283
+ ( ref4, 4 , T4 ) ,
284
+ ( ref5, 5 , T5 ) ,
285
+ ( ref6, 6 , T6 ) ,
286
+ ( ref7, 7 , T7 ) ,
287
+ ( ref8, 8 , T8 ) ,
288
+ ( ref9, 9 , T9 ) ,
289
+ ( ref10, 10 , T10 ) ,
290
+ ( ref11, 11 , T11 )
242
291
) ;
243
292
244
293
#[ cfg( test) ]
@@ -313,4 +362,68 @@ mod test {
313
362
assert_eq ! ( 2 , slice[ 1 ] . extract( ) . unwrap( ) ) ;
314
363
assert_eq ! ( 3 , slice[ 2 ] . extract( ) . unwrap( ) ) ;
315
364
}
365
+
366
+ #[ test]
367
+ fn test_tuple_lengths_up_to_12 ( ) {
368
+ Python :: with_gil ( |py| {
369
+ let t0 = ( 0 , ) . to_object ( py) ;
370
+ let t1 = ( 0 , 1 ) . to_object ( py) ;
371
+ let t2 = ( 0 , 1 , 2 ) . to_object ( py) ;
372
+ let t3 = ( 0 , 1 , 2 , 3 ) . to_object ( py) ;
373
+ let t4 = ( 0 , 1 , 2 , 3 , 4 ) . to_object ( py) ;
374
+ let t5 = ( 0 , 1 , 2 , 3 , 4 , 5 ) . to_object ( py) ;
375
+ let t6 = ( 0 , 1 , 2 , 3 , 4 , 5 , 6 ) . to_object ( py) ;
376
+ let t7 = ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ) . to_object ( py) ;
377
+ let t8 = ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ) . to_object ( py) ;
378
+ let t9 = ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ) . to_object ( py) ;
379
+ let t10 = ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ) . to_object ( py) ;
380
+ let t11 = ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 ) . to_object ( py) ;
381
+
382
+ assert_eq ! ( t0. extract:: <( i32 , ) >( py) . unwrap( ) , ( 0 , ) ) ;
383
+ assert_eq ! ( t1. extract:: <( i32 , i32 ) >( py) . unwrap( ) , ( 0 , 1 , ) ) ;
384
+ assert_eq ! ( t2. extract:: <( i32 , i32 , i32 ) >( py) . unwrap( ) , ( 0 , 1 , 2 , ) ) ;
385
+ assert_eq ! (
386
+ t3. extract:: <( i32 , i32 , i32 , i32 , ) >( py) . unwrap( ) ,
387
+ ( 0 , 1 , 2 , 3 , )
388
+ ) ;
389
+ assert_eq ! (
390
+ t4. extract:: <( i32 , i32 , i32 , i32 , i32 , ) >( py) . unwrap( ) ,
391
+ ( 0 , 1 , 2 , 3 , 4 , )
392
+ ) ;
393
+ assert_eq ! (
394
+ t5. extract:: <( i32 , i32 , i32 , i32 , i32 , i32 , ) >( py) . unwrap( ) ,
395
+ ( 0 , 1 , 2 , 3 , 4 , 5 , )
396
+ ) ;
397
+ assert_eq ! (
398
+ t6. extract:: <( i32 , i32 , i32 , i32 , i32 , i32 , i32 , ) >( py)
399
+ . unwrap( ) ,
400
+ ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , )
401
+ ) ;
402
+ assert_eq ! (
403
+ t7. extract:: <( i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , ) >( py)
404
+ . unwrap( ) ,
405
+ ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , )
406
+ ) ;
407
+ assert_eq ! (
408
+ t8. extract:: <( i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , ) >( py)
409
+ . unwrap( ) ,
410
+ ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , )
411
+ ) ;
412
+ assert_eq ! (
413
+ t9. extract:: <( i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , ) >( py)
414
+ . unwrap( ) ,
415
+ ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , )
416
+ ) ;
417
+ assert_eq ! (
418
+ t10. extract:: <( i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , ) >( py)
419
+ . unwrap( ) ,
420
+ ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , )
421
+ ) ;
422
+ assert_eq ! (
423
+ t11. extract:: <( i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , i32 , ) >( py)
424
+ . unwrap( ) ,
425
+ ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , )
426
+ ) ;
427
+ } )
428
+ }
316
429
}
0 commit comments