@@ -257,16 +257,14 @@ macro_rules! tuple_getters(
257
257
}
258
258
) +) => (
259
259
pub mod getters {
260
- use kinds:: Copy ;
261
-
262
260
$( pub trait $name<$( $T) ,+> {
263
- $( fn $method( & self ) -> $T; ) +
261
+ $( fn $method< ' a> ( & ' a self ) -> & ' a $T; ) +
264
262
} ) +
265
263
266
- $( impl <$( $T: Copy ) ,+> $name<$( $T) ,+> for ( $( $T) ,+) {
264
+ $( impl <$( $T) ,+> $name<$( $T) ,+> for ( $( $T) ,+) {
267
265
$(
268
266
#[ inline( always) ]
269
- fn $method( & self ) -> $T {
267
+ fn $method< ' a> ( & ' a self ) -> & ' a $T {
270
268
match * self {
271
269
$accessor => $t
272
270
}
@@ -279,113 +277,113 @@ macro_rules! tuple_getters(
279
277
280
278
tuple_getters ! (
281
279
Tuple2 {
282
- fn n0 -> A { ( a, _) => a }
283
- fn n1 -> B { ( _, b) => b }
280
+ fn n0 -> A { ( ref a, _) => a }
281
+ fn n1 -> B { ( _, ref b) => b }
284
282
}
285
283
286
284
Tuple3 {
287
- fn n0 -> A { ( a, _, _) => a }
288
- fn n1 -> B { ( _, b, _) => b }
289
- fn n2 -> C { ( _, _, c) => c }
285
+ fn n0 -> A { ( ref a, _, _) => a }
286
+ fn n1 -> B { ( _, ref b, _) => b }
287
+ fn n2 -> C { ( _, _, ref c) => c }
290
288
}
291
289
292
290
Tuple4 {
293
- fn n0 -> A { ( a, _, _, _) => a }
294
- fn n1 -> B { ( _, b, _, _) => b }
295
- fn n2 -> C { ( _, _, c, _) => c }
296
- fn n3 -> D { ( _, _, _, d) => d }
291
+ fn n0 -> A { ( ref a, _, _, _) => a }
292
+ fn n1 -> B { ( _, ref b, _, _) => b }
293
+ fn n2 -> C { ( _, _, ref c, _) => c }
294
+ fn n3 -> D { ( _, _, _, ref d) => d }
297
295
}
298
296
299
297
Tuple5 {
300
- fn n0 -> A { ( a, _, _, _, _) => a }
301
- fn n1 -> B { ( _, b, _, _, _) => b }
302
- fn n2 -> C { ( _, _, c, _, _) => c }
303
- fn n3 -> D { ( _, _, _, d, _) => d }
304
- fn n4 -> E { ( _, _, _, _, e) => e }
298
+ fn n0 -> A { ( ref a, _, _, _, _) => a }
299
+ fn n1 -> B { ( _, ref b, _, _, _) => b }
300
+ fn n2 -> C { ( _, _, ref c, _, _) => c }
301
+ fn n3 -> D { ( _, _, _, ref d, _) => d }
302
+ fn n4 -> E { ( _, _, _, _, ref e) => e }
305
303
}
306
304
307
305
Tuple6 {
308
- fn n0 -> A { ( a, _, _, _, _, _) => a }
309
- fn n1 -> B { ( _, b, _, _, _, _) => b }
310
- fn n2 -> C { ( _, _, c, _, _, _) => c }
311
- fn n3 -> D { ( _, _, _, d, _, _) => d }
312
- fn n4 -> E { ( _, _, _, _, e, _) => e }
313
- fn n5 -> F { ( _, _, _, _, _, f) => f }
306
+ fn n0 -> A { ( ref a, _, _, _, _, _) => a }
307
+ fn n1 -> B { ( _, ref b, _, _, _, _) => b }
308
+ fn n2 -> C { ( _, _, ref c, _, _, _) => c }
309
+ fn n3 -> D { ( _, _, _, ref d, _, _) => d }
310
+ fn n4 -> E { ( _, _, _, _, ref e, _) => e }
311
+ fn n5 -> F { ( _, _, _, _, _, ref f) => f }
314
312
}
315
313
316
314
Tuple7 {
317
- fn n0 -> A { ( a, _, _, _, _, _, _) => a }
318
- fn n1 -> B { ( _, b, _, _, _, _, _) => b }
319
- fn n2 -> C { ( _, _, c, _, _, _, _) => c }
320
- fn n3 -> D { ( _, _, _, d, _, _, _) => d }
321
- fn n4 -> E { ( _, _, _, _, e, _, _) => e }
322
- fn n5 -> F { ( _, _, _, _, _, f, _) => f }
323
- fn n6 -> G { ( _, _, _, _, _, _, g) => g }
315
+ fn n0 -> A { ( ref a, _, _, _, _, _, _) => a }
316
+ fn n1 -> B { ( _, ref b, _, _, _, _, _) => b }
317
+ fn n2 -> C { ( _, _, ref c, _, _, _, _) => c }
318
+ fn n3 -> D { ( _, _, _, ref d, _, _, _) => d }
319
+ fn n4 -> E { ( _, _, _, _, ref e, _, _) => e }
320
+ fn n5 -> F { ( _, _, _, _, _, ref f, _) => f }
321
+ fn n6 -> G { ( _, _, _, _, _, _, ref g) => g }
324
322
}
325
323
326
324
Tuple8 {
327
- fn n0 -> A { ( a, _, _, _, _, _, _, _) => a }
328
- fn n1 -> B { ( _, b, _, _, _, _, _, _) => b }
329
- fn n2 -> C { ( _, _, c, _, _, _, _, _) => c }
330
- fn n3 -> D { ( _, _, _, d, _, _, _, _) => d }
331
- fn n4 -> E { ( _, _, _, _, e, _, _, _) => e }
332
- fn n5 -> F { ( _, _, _, _, _, f, _, _) => f }
333
- fn n6 -> G { ( _, _, _, _, _, _, g, _) => g }
334
- fn n7 -> H { ( _, _, _, _, _, _, _, h) => h }
325
+ fn n0 -> A { ( ref a, _, _, _, _, _, _, _) => a }
326
+ fn n1 -> B { ( _, ref b, _, _, _, _, _, _) => b }
327
+ fn n2 -> C { ( _, _, ref c, _, _, _, _, _) => c }
328
+ fn n3 -> D { ( _, _, _, ref d, _, _, _, _) => d }
329
+ fn n4 -> E { ( _, _, _, _, ref e, _, _, _) => e }
330
+ fn n5 -> F { ( _, _, _, _, _, ref f, _, _) => f }
331
+ fn n6 -> G { ( _, _, _, _, _, _, ref g, _) => g }
332
+ fn n7 -> H { ( _, _, _, _, _, _, _, ref h) => h }
335
333
}
336
334
337
335
Tuple9 {
338
- fn n0 -> A { ( a, _, _, _, _, _, _, _, _) => a }
339
- fn n1 -> B { ( _, b, _, _, _, _, _, _, _) => b }
340
- fn n2 -> C { ( _, _, c, _, _, _, _, _, _) => c }
341
- fn n3 -> D { ( _, _, _, d, _, _, _, _, _) => d }
342
- fn n4 -> E { ( _, _, _, _, e, _, _, _, _) => e }
343
- fn n5 -> F { ( _, _, _, _, _, f, _, _, _) => f }
344
- fn n6 -> G { ( _, _, _, _, _, _, g, _, _) => g }
345
- fn n7 -> H { ( _, _, _, _, _, _, _, h, _) => h }
346
- fn n8 -> I { ( _, _, _, _, _, _, _, _, i) => i }
336
+ fn n0 -> A { ( ref a, _, _, _, _, _, _, _, _) => a }
337
+ fn n1 -> B { ( _, ref b, _, _, _, _, _, _, _) => b }
338
+ fn n2 -> C { ( _, _, ref c, _, _, _, _, _, _) => c }
339
+ fn n3 -> D { ( _, _, _, ref d, _, _, _, _, _) => d }
340
+ fn n4 -> E { ( _, _, _, _, ref e, _, _, _, _) => e }
341
+ fn n5 -> F { ( _, _, _, _, _, ref f, _, _, _) => f }
342
+ fn n6 -> G { ( _, _, _, _, _, _, ref g, _, _) => g }
343
+ fn n7 -> H { ( _, _, _, _, _, _, _, ref h, _) => h }
344
+ fn n8 -> I { ( _, _, _, _, _, _, _, _, ref i) => i }
347
345
}
348
346
349
347
Tuple10 {
350
- fn n0 -> A { ( a, _, _, _, _, _, _, _, _, _) => a }
351
- fn n1 -> B { ( _, b, _, _, _, _, _, _, _, _) => b }
352
- fn n2 -> C { ( _, _, c, _, _, _, _, _, _, _) => c }
353
- fn n3 -> D { ( _, _, _, d, _, _, _, _, _, _) => d }
354
- fn n4 -> E { ( _, _, _, _, e, _, _, _, _, _) => e }
355
- fn n5 -> F { ( _, _, _, _, _, f, _, _, _, _) => f }
356
- fn n6 -> G { ( _, _, _, _, _, _, g, _, _, _) => g }
357
- fn n7 -> H { ( _, _, _, _, _, _, _, h, _, _) => h }
358
- fn n8 -> I { ( _, _, _, _, _, _, _, _, i, _) => i }
359
- fn n9 -> J { ( _, _, _, _, _, _, _, _, _, j) => j }
348
+ fn n0 -> A { ( ref a, _, _, _, _, _, _, _, _, _) => a }
349
+ fn n1 -> B { ( _, ref b, _, _, _, _, _, _, _, _) => b }
350
+ fn n2 -> C { ( _, _, ref c, _, _, _, _, _, _, _) => c }
351
+ fn n3 -> D { ( _, _, _, ref d, _, _, _, _, _, _) => d }
352
+ fn n4 -> E { ( _, _, _, _, ref e, _, _, _, _, _) => e }
353
+ fn n5 -> F { ( _, _, _, _, _, ref f, _, _, _, _) => f }
354
+ fn n6 -> G { ( _, _, _, _, _, _, ref g, _, _, _) => g }
355
+ fn n7 -> H { ( _, _, _, _, _, _, _, ref h, _, _) => h }
356
+ fn n8 -> I { ( _, _, _, _, _, _, _, _, ref i, _) => i }
357
+ fn n9 -> J { ( _, _, _, _, _, _, _, _, _, ref j) => j }
360
358
}
361
359
362
360
Tuple11 {
363
- fn n0 -> A { ( a, _, _, _, _, _, _, _, _, _, _) => a }
364
- fn n1 -> B { ( _, b, _, _, _, _, _, _, _, _, _) => b }
365
- fn n2 -> C { ( _, _, c, _, _, _, _, _, _, _, _) => c }
366
- fn n3 -> D { ( _, _, _, d, _, _, _, _, _, _, _) => d }
367
- fn n4 -> E { ( _, _, _, _, e, _, _, _, _, _, _) => e }
368
- fn n5 -> F { ( _, _, _, _, _, f, _, _, _, _, _) => f }
369
- fn n6 -> G { ( _, _, _, _, _, _, g, _, _, _, _) => g }
370
- fn n7 -> H { ( _, _, _, _, _, _, _, h, _, _, _) => h }
371
- fn n8 -> I { ( _, _, _, _, _, _, _, _, i, _, _) => i }
372
- fn n9 -> J { ( _, _, _, _, _, _, _, _, _, j, _) => j }
373
- fn n10 -> K { ( _, _, _, _, _, _, _, _, _, _, k) => k }
361
+ fn n0 -> A { ( ref a, _, _, _, _, _, _, _, _, _, _) => a }
362
+ fn n1 -> B { ( _, ref b, _, _, _, _, _, _, _, _, _) => b }
363
+ fn n2 -> C { ( _, _, ref c, _, _, _, _, _, _, _, _) => c }
364
+ fn n3 -> D { ( _, _, _, ref d, _, _, _, _, _, _, _) => d }
365
+ fn n4 -> E { ( _, _, _, _, ref e, _, _, _, _, _, _) => e }
366
+ fn n5 -> F { ( _, _, _, _, _, ref f, _, _, _, _, _) => f }
367
+ fn n6 -> G { ( _, _, _, _, _, _, ref g, _, _, _, _) => g }
368
+ fn n7 -> H { ( _, _, _, _, _, _, _, ref h, _, _, _) => h }
369
+ fn n8 -> I { ( _, _, _, _, _, _, _, _, ref i, _, _) => i }
370
+ fn n9 -> J { ( _, _, _, _, _, _, _, _, _, ref j, _) => j }
371
+ fn n10 -> K { ( _, _, _, _, _, _, _, _, _, _, ref k) => k }
374
372
}
375
373
376
374
Tuple12 {
377
- fn n0 -> A { ( a, _, _, _, _, _, _, _, _, _, _, _) => a }
378
- fn n1 -> B { ( _, b, _, _, _, _, _, _, _, _, _, _) => b }
379
- fn n2 -> C { ( _, _, c, _, _, _, _, _, _, _, _, _) => c }
380
- fn n3 -> D { ( _, _, _, d, _, _, _, _, _, _, _, _) => d }
381
- fn n4 -> E { ( _, _, _, _, e, _, _, _, _, _, _, _) => e }
382
- fn n5 -> F { ( _, _, _, _, _, f, _, _, _, _, _, _) => f }
383
- fn n6 -> G { ( _, _, _, _, _, _, g, _, _, _, _, _) => g }
384
- fn n7 -> H { ( _, _, _, _, _, _, _, h, _, _, _, _) => h }
385
- fn n8 -> I { ( _, _, _, _, _, _, _, _, i, _, _, _) => i }
386
- fn n9 -> J { ( _, _, _, _, _, _, _, _, _, j, _, _) => j }
387
- fn n10 -> K { ( _, _, _, _, _, _, _, _, _, _, k, _) => k }
388
- fn n11 -> L { ( _, _, _, _, _, _, _, _, _, _, _, l) => l }
375
+ fn n0 -> A { ( ref a, _, _, _, _, _, _, _, _, _, _, _) => a }
376
+ fn n1 -> B { ( _, ref b, _, _, _, _, _, _, _, _, _, _) => b }
377
+ fn n2 -> C { ( _, _, ref c, _, _, _, _, _, _, _, _, _) => c }
378
+ fn n3 -> D { ( _, _, _, ref d, _, _, _, _, _, _, _, _) => d }
379
+ fn n4 -> E { ( _, _, _, _, ref e, _, _, _, _, _, _, _) => e }
380
+ fn n5 -> F { ( _, _, _, _, _, ref f, _, _, _, _, _, _) => f }
381
+ fn n6 -> G { ( _, _, _, _, _, _, ref g, _, _, _, _, _) => g }
382
+ fn n7 -> H { ( _, _, _, _, _, _, _, ref h, _, _, _, _) => h }
383
+ fn n8 -> I { ( _, _, _, _, _, _, _, _, ref i, _, _, _) => i }
384
+ fn n9 -> J { ( _, _, _, _, _, _, _, _, _, ref j, _, _) => j }
385
+ fn n10 -> K { ( _, _, _, _, _, _, _, _, _, _, ref k, _) => k }
386
+ fn n11 -> L { ( _, _, _, _, _, _, _, _, _, _, _, ref l) => l }
389
387
}
390
388
)
391
389
@@ -415,16 +413,16 @@ fn test_clone() {
415
413
#[ test]
416
414
fn test_n_tuple ( ) {
417
415
let t = ( 0u8 , 1u16 , 2u32 , 3u64 , 4 u, 5i8 , 6i16 , 7i32 , 8i64 , 9 i, 10f32 , 11f64 ) ;
418
- assert_eq ! ( t. n0( ) , 0u8 ) ;
419
- assert_eq ! ( t. n1( ) , 1u16 ) ;
420
- assert_eq ! ( t. n2( ) , 2u32 ) ;
421
- assert_eq ! ( t. n3( ) , 3u64 ) ;
422
- assert_eq ! ( t. n4( ) , 4 u) ;
423
- assert_eq ! ( t. n5( ) , 5i8 ) ;
424
- assert_eq ! ( t. n6( ) , 6i16 ) ;
425
- assert_eq ! ( t. n7( ) , 7i32 ) ;
426
- assert_eq ! ( t. n8( ) , 8i64 ) ;
427
- assert_eq ! ( t. n9( ) , 9 i) ;
428
- assert_eq ! ( t. n10( ) , 10f32 ) ;
429
- assert_eq ! ( t. n11( ) , 11f64 ) ;
416
+ assert_eq ! ( * t. n0( ) , 0u8 ) ;
417
+ assert_eq ! ( * t. n1( ) , 1u16 ) ;
418
+ assert_eq ! ( * t. n2( ) , 2u32 ) ;
419
+ assert_eq ! ( * t. n3( ) , 3u64 ) ;
420
+ assert_eq ! ( * t. n4( ) , 4 u) ;
421
+ assert_eq ! ( * t. n5( ) , 5i8 ) ;
422
+ assert_eq ! ( * t. n6( ) , 6i16 ) ;
423
+ assert_eq ! ( * t. n7( ) , 7i32 ) ;
424
+ assert_eq ! ( * t. n8( ) , 8i64 ) ;
425
+ assert_eq ! ( * t. n9( ) , 9 i) ;
426
+ assert_eq ! ( * t. n10( ) , 10f32 ) ;
427
+ assert_eq ! ( * t. n11( ) , 11f64 ) ;
430
428
}
0 commit comments