File tree 3 files changed +50
-10
lines changed 3 files changed +50
-10
lines changed Original file line number Diff line number Diff line change @@ -1393,7 +1393,19 @@ array_impls! {
1393
1393
macro_rules! tuple_impls {
1394
1394
( $( $len: tt => ( $( $n: tt $name: ident) +) ) +) => {
1395
1395
$(
1396
- impl <' de, $( $name: Deserialize <' de>) ,+> Deserialize <' de> for ( $( $name, ) +) {
1396
+ #[ cfg_attr( docsrs, doc( hidden) ) ]
1397
+ impl <' de, $( $name) ,+> Deserialize <' de> for ( $( $name, ) +)
1398
+ where
1399
+ $( $name: Deserialize <' de>, ) +
1400
+ {
1401
+ tuple_impl_body!( $len => ( $( $n $name) +) ) ;
1402
+ }
1403
+ ) +
1404
+ } ;
1405
+ }
1406
+
1407
+ macro_rules! tuple_impl_body {
1408
+ ( $len: tt => ( $( $n: tt $name: ident) +) ) => {
1397
1409
#[ inline]
1398
1410
fn deserialize<D >( deserializer: D ) -> Result <Self , D :: Error >
1399
1411
where
@@ -1462,13 +1474,22 @@ macro_rules! tuple_impls {
1462
1474
1463
1475
deserializer. deserialize_tuple( $len, TupleInPlaceVisitor ( place) )
1464
1476
}
1465
- }
1466
- ) +
1467
- }
1477
+ } ;
1478
+ }
1479
+
1480
+ #[ cfg_attr( docsrs, doc( fake_variadic) ) ]
1481
+ #[ cfg_attr(
1482
+ docsrs,
1483
+ doc = "This trait is implemented for tuples up to 16 items long."
1484
+ ) ]
1485
+ impl < ' de , T > Deserialize < ' de > for ( T , )
1486
+ where
1487
+ T : Deserialize < ' de > ,
1488
+ {
1489
+ tuple_impl_body ! ( 1 => ( 0 T ) ) ;
1468
1490
}
1469
1491
1470
1492
tuple_impls ! {
1471
- 1 => ( 0 T0 )
1472
1493
2 => ( 0 T0 1 T1 )
1473
1494
3 => ( 0 T0 1 T1 2 T2 )
1474
1495
4 => ( 0 T0 1 T1 2 T2 3 T3 )
Original file line number Diff line number Diff line change 99
99
// Support using Serde without the standard library!
100
100
#![ cfg_attr( not( feature = "std" ) , no_std) ]
101
101
// Show which crate feature enables conditionally compiled APIs in documentation.
102
- #![ cfg_attr( docsrs, feature( doc_cfg) ) ]
102
+ #![ cfg_attr( docsrs, feature( doc_cfg, rustdoc_internals) ) ]
103
+ #![ cfg_attr( docsrs, allow( internal_features) ) ]
103
104
// Unstable functionality only if the user asks for it. For tracking and
104
105
// discussion of these features please refer to this issue:
105
106
//
Original file line number Diff line number Diff line change @@ -386,10 +386,19 @@ impl Serialize for ! {
386
386
macro_rules! tuple_impls {
387
387
( $( $len: expr => ( $( $n: tt $name: ident) +) ) +) => {
388
388
$(
389
+ #[ cfg_attr( docsrs, doc( hidden) ) ]
389
390
impl <$( $name) ,+> Serialize for ( $( $name, ) +)
390
391
where
391
392
$( $name: Serialize , ) +
392
393
{
394
+ tuple_impl_body!( $len => ( $( $n) +) ) ;
395
+ }
396
+ ) +
397
+ } ;
398
+ }
399
+
400
+ macro_rules! tuple_impl_body {
401
+ ( $len: expr => ( $( $n: tt) +) ) => {
393
402
#[ inline]
394
403
fn serialize<S >( & self , serializer: S ) -> Result <S :: Ok , S :: Error >
395
404
where
@@ -401,13 +410,22 @@ macro_rules! tuple_impls {
401
410
) +
402
411
tuple. end( )
403
412
}
404
- }
405
- ) +
406
- }
413
+ } ;
414
+ }
415
+
416
+ #[ cfg_attr( docsrs, doc( fake_variadic) ) ]
417
+ #[ cfg_attr(
418
+ docsrs,
419
+ doc = "This trait is implemented for tuples up to 16 items long."
420
+ ) ]
421
+ impl < T > Serialize for ( T , )
422
+ where
423
+ T : Serialize ,
424
+ {
425
+ tuple_impl_body ! ( 1 => ( 0 ) ) ;
407
426
}
408
427
409
428
tuple_impls ! {
410
- 1 => ( 0 T0 )
411
429
2 => ( 0 T0 1 T1 )
412
430
3 => ( 0 T0 1 T1 2 T2 )
413
431
4 => ( 0 T0 1 T1 2 T2 3 T3 )
You can’t perform that action at this time.
0 commit comments