@@ -1406,74 +1406,74 @@ macro_rules! tuple_impls {
14061406
14071407macro_rules! tuple_impl_body {
14081408 ( $len: tt => ( $( $n: tt $name: ident) +) ) => {
1409+ #[ inline]
1410+ fn deserialize<D >( deserializer: D ) -> Result <Self , D :: Error >
1411+ where
1412+ D : Deserializer <' de>,
1413+ {
1414+ struct TupleVisitor <$( $name, ) +> {
1415+ marker: PhantomData <( $( $name, ) +) >,
1416+ }
1417+
1418+ impl <' de, $( $name: Deserialize <' de>) ,+> Visitor <' de> for TupleVisitor <$( $name, ) +> {
1419+ type Value = ( $( $name, ) +) ;
1420+
1421+ fn expecting( & self , formatter: & mut fmt:: Formatter ) -> fmt:: Result {
1422+ formatter. write_str( concat!( "a tuple of size " , $len) )
1423+ }
1424+
14091425 #[ inline]
1410- fn deserialize<D >( deserializer: D ) -> Result <Self , D :: Error >
1426+ #[ allow( non_snake_case) ]
1427+ fn visit_seq<A >( self , mut seq: A ) -> Result <Self :: Value , A :: Error >
14111428 where
1412- D : Deserializer <' de>,
1429+ A : SeqAccess <' de>,
14131430 {
1414- struct TupleVisitor <$( $name, ) +> {
1415- marker: PhantomData <( $( $name, ) +) >,
1416- }
1431+ $(
1432+ let $name = match tri!( seq. next_element( ) ) {
1433+ Some ( value) => value,
1434+ None => return Err ( Error :: invalid_length( $n, & self ) ) ,
1435+ } ;
1436+ ) +
14171437
1418- impl <' de, $( $name: Deserialize <' de>) ,+> Visitor <' de> for TupleVisitor <$( $name, ) +> {
1419- type Value = ( $( $name, ) +) ;
1438+ Ok ( ( $( $name, ) +) )
1439+ }
1440+ }
14201441
1421- fn expecting( & self , formatter: & mut fmt:: Formatter ) -> fmt:: Result {
1422- formatter. write_str( concat!( "a tuple of size " , $len) )
1423- }
1442+ deserializer. deserialize_tuple( $len, TupleVisitor { marker: PhantomData } )
1443+ }
14241444
1425- #[ inline]
1426- #[ allow( non_snake_case) ]
1427- fn visit_seq<A >( self , mut seq: A ) -> Result <Self :: Value , A :: Error >
1428- where
1429- A : SeqAccess <' de>,
1430- {
1431- $(
1432- let $name = match tri!( seq. next_element( ) ) {
1433- Some ( value) => value,
1434- None => return Err ( Error :: invalid_length( $n, & self ) ) ,
1435- } ;
1436- ) +
1445+ #[ inline]
1446+ fn deserialize_in_place<D >( deserializer: D , place: & mut Self ) -> Result <( ) , D :: Error >
1447+ where
1448+ D : Deserializer <' de>,
1449+ {
1450+ struct TupleInPlaceVisitor <' a, $( $name: ' a, ) +>( & ' a mut ( $( $name, ) +) ) ;
14371451
1438- Ok ( ( $( $name, ) +) )
1439- }
1440- }
1452+ impl <' a, ' de, $( $name: Deserialize <' de>) ,+> Visitor <' de> for TupleInPlaceVisitor <' a, $( $name, ) +> {
1453+ type Value = ( ) ;
14411454
1442- deserializer. deserialize_tuple( $len, TupleVisitor { marker: PhantomData } )
1455+ fn expecting( & self , formatter: & mut fmt:: Formatter ) -> fmt:: Result {
1456+ formatter. write_str( concat!( "a tuple of size " , $len) )
14431457 }
14441458
14451459 #[ inline]
1446- fn deserialize_in_place<D >( deserializer: D , place: & mut Self ) -> Result <( ) , D :: Error >
1460+ #[ allow( non_snake_case) ]
1461+ fn visit_seq<A >( self , mut seq: A ) -> Result <Self :: Value , A :: Error >
14471462 where
1448- D : Deserializer <' de>,
1463+ A : SeqAccess <' de>,
14491464 {
1450- struct TupleInPlaceVisitor <' a, $( $name: ' a, ) +>( & ' a mut ( $( $name, ) +) ) ;
1451-
1452- impl <' a, ' de, $( $name: Deserialize <' de>) ,+> Visitor <' de> for TupleInPlaceVisitor <' a, $( $name, ) +> {
1453- type Value = ( ) ;
1454-
1455- fn expecting( & self , formatter: & mut fmt:: Formatter ) -> fmt:: Result {
1456- formatter. write_str( concat!( "a tuple of size " , $len) )
1457- }
1458-
1459- #[ inline]
1460- #[ allow( non_snake_case) ]
1461- fn visit_seq<A >( self , mut seq: A ) -> Result <Self :: Value , A :: Error >
1462- where
1463- A : SeqAccess <' de>,
1464- {
1465- $(
1466- if tri!( seq. next_element_seed( InPlaceSeed ( & mut ( self . 0 ) . $n) ) ) . is_none( ) {
1467- return Err ( Error :: invalid_length( $n, & self ) ) ;
1468- }
1469- ) +
1470-
1471- Ok ( ( ) )
1465+ $(
1466+ if tri!( seq. next_element_seed( InPlaceSeed ( & mut ( self . 0 ) . $n) ) ) . is_none( ) {
1467+ return Err ( Error :: invalid_length( $n, & self ) ) ;
14721468 }
1473- }
1469+ ) +
14741470
1475- deserializer . deserialize_tuple ( $len , TupleInPlaceVisitor ( place ) )
1471+ Ok ( ( ) )
14761472 }
1473+ }
1474+
1475+ deserializer. deserialize_tuple( $len, TupleInPlaceVisitor ( place) )
1476+ }
14771477 } ;
14781478}
14791479
0 commit comments