@@ -1398,119 +1398,38 @@ impl<T: Writeable> Writeable for RwLock<T> {
13981398	} 
13991399} 
14001400
1401- impl < A :  Readable ,  B :  Readable >  Readable  for  ( A ,  B )  { 
1402- 	fn  read < R :  Read > ( r :  & mut  R )  -> Result < Self ,  DecodeError >  { 
1403- 		let  a:  A  = Readable :: read ( r) ?; 
1404- 		let  b:  B  = Readable :: read ( r) ?; 
1405- 		Ok ( ( a,  b) ) 
1406- 	} 
1407- } 
1408- impl < A :  Writeable ,  B :  Writeable >  Writeable  for  ( A ,  B )  { 
1409- 	fn  write < W :  Writer > ( & self ,  w :  & mut  W )  -> Result < ( ) ,  io:: Error >  { 
1410- 		self . 0 . write ( w) ?; 
1411- 		self . 1 . write ( w) 
1412- 	} 
1413- } 
1414- 
1415- impl < A :  Readable ,  B :  Readable ,  C :  Readable >  Readable  for  ( A ,  B ,  C )  { 
1416- 	fn  read < R :  Read > ( r :  & mut  R )  -> Result < Self ,  DecodeError >  { 
1417- 		let  a:  A  = Readable :: read ( r) ?; 
1418- 		let  b:  B  = Readable :: read ( r) ?; 
1419- 		let  c:  C  = Readable :: read ( r) ?; 
1420- 		Ok ( ( a,  b,  c) ) 
1421- 	} 
1422- } 
1423- impl < A :  Writeable ,  B :  Writeable ,  C :  Writeable >  Writeable  for  ( A ,  B ,  C )  { 
1424- 	fn  write < W :  Writer > ( & self ,  w :  & mut  W )  -> Result < ( ) ,  io:: Error >  { 
1425- 		self . 0 . write ( w) ?; 
1426- 		self . 1 . write ( w) ?; 
1427- 		self . 2 . write ( w) 
1428- 	} 
1429- } 
1430- 
1431- impl < A :  Readable ,  B :  Readable ,  C :  Readable ,  D :  Readable >  Readable  for  ( A ,  B ,  C ,  D )  { 
1432- 	fn  read < R :  Read > ( r :  & mut  R )  -> Result < Self ,  DecodeError >  { 
1433- 		let  a:  A  = Readable :: read ( r) ?; 
1434- 		let  b:  B  = Readable :: read ( r) ?; 
1435- 		let  c:  C  = Readable :: read ( r) ?; 
1436- 		let  d:  D  = Readable :: read ( r) ?; 
1437- 		Ok ( ( a,  b,  c,  d) ) 
1438- 	} 
1439- } 
1440- impl < A :  Writeable ,  B :  Writeable ,  C :  Writeable ,  D :  Writeable >  Writeable  for  ( A ,  B ,  C ,  D )  { 
1441- 	fn  write < W :  Writer > ( & self ,  w :  & mut  W )  -> Result < ( ) ,  io:: Error >  { 
1442- 		self . 0 . write ( w) ?; 
1443- 		self . 1 . write ( w) ?; 
1444- 		self . 2 . write ( w) ?; 
1445- 		self . 3 . write ( w) 
1446- 	} 
1447- } 
1448- 
1449- impl < A :  Readable ,  B :  Readable ,  C :  Readable ,  D :  Readable ,  E :  Readable >  Readable  for  ( A ,  B ,  C ,  D ,  E )  { 
1450- 	fn  read < R :  Read > ( r :  & mut  R )  -> Result < Self ,  DecodeError >  { 
1451- 		let  a:  A  = Readable :: read ( r) ?; 
1452- 		let  b:  B  = Readable :: read ( r) ?; 
1453- 		let  c:  C  = Readable :: read ( r) ?; 
1454- 		let  d:  D  = Readable :: read ( r) ?; 
1455- 		let  e:  E  = Readable :: read ( r) ?; 
1456- 		Ok ( ( a,  b,  c,  d,  e) ) 
1457- 	} 
1458- } 
1459- impl < A :  Writeable ,  B :  Writeable ,  C :  Writeable ,  D :  Writeable ,  E :  Writeable >  Writeable  for  ( A ,  B ,  C ,  D ,  E )  { 
1460- 	fn  write < W :  Writer > ( & self ,  w :  & mut  W )  -> Result < ( ) ,  io:: Error >  { 
1461- 		self . 0 . write ( w) ?; 
1462- 		self . 1 . write ( w) ?; 
1463- 		self . 2 . write ( w) ?; 
1464- 		self . 3 . write ( w) ?; 
1465- 		self . 4 . write ( w) 
1466- 	} 
1467- } 
1401+ macro_rules!  impl_tuple_ser { 
1402+ 	( $( $i:  ident :  $type:  tt) ,* )  => { 
1403+ 		impl <$( $type) ,* > Readable  for  ( $( $type) ,* ) 
1404+ 		where  $( 
1405+ 			$type:  Readable , 
1406+ 		) * 
1407+ 		{ 
1408+ 			fn  read<R :  Read >( r:  & mut  R )  -> Result <Self ,  DecodeError > { 
1409+ 				Ok ( ( $( <$type as  Readable >:: read( r) ?) ,* ) ) 
1410+ 			} 
1411+ 		} 
14681412
1469- impl < A :  Readable ,  B :  Readable ,  C :  Readable ,  D :  Readable ,  E :  Readable ,  F :  Readable >  Readable  for  ( A ,  B ,  C ,  D ,  E ,  F )  { 
1470- 	fn  read < R :  Read > ( r :  & mut  R )  -> Result < Self ,  DecodeError >  { 
1471- 		let  a:  A  = Readable :: read ( r) ?; 
1472- 		let  b:  B  = Readable :: read ( r) ?; 
1473- 		let  c:  C  = Readable :: read ( r) ?; 
1474- 		let  d:  D  = Readable :: read ( r) ?; 
1475- 		let  e:  E  = Readable :: read ( r) ?; 
1476- 		let  f:  F  = Readable :: read ( r) ?; 
1477- 		Ok ( ( a,  b,  c,  d,  e,  f) ) 
1478- 	} 
1479- } 
1480- impl < A :  Writeable ,  B :  Writeable ,  C :  Writeable ,  D :  Writeable ,  E :  Writeable ,  F :  Writeable >  Writeable  for  ( A ,  B ,  C ,  D ,  E ,  F )  { 
1481- 	fn  write < W :  Writer > ( & self ,  w :  & mut  W )  -> Result < ( ) ,  io:: Error >  { 
1482- 		self . 0 . write ( w) ?; 
1483- 		self . 1 . write ( w) ?; 
1484- 		self . 2 . write ( w) ?; 
1485- 		self . 3 . write ( w) ?; 
1486- 		self . 4 . write ( w) ?; 
1487- 		self . 5 . write ( w) 
1413+ 		impl <$( $type) ,* > Writeable  for  ( $( $type) ,* ) 
1414+ 		where  $( 
1415+ 			$type:  Writeable , 
1416+ 		) * 
1417+ 		{ 
1418+ 			fn  write<W :  Writer >( & self ,  w:  & mut  W )  -> Result <( ) ,  io:: Error > { 
1419+ 				let  ( $( $i) ,* )  = self ; 
1420+ 				$( $i. write( w) ?; ) * 
1421+ 				Ok ( ( ) ) 
1422+ 			} 
1423+ 		} 
14881424	} 
14891425} 
14901426
1491- impl < A :  Readable ,  B :  Readable ,  C :  Readable ,  D :  Readable ,  E :  Readable ,  F :  Readable ,  G :  Readable >  Readable  for  ( A ,  B ,  C ,  D ,  E ,  F ,  G )  { 
1492- 	fn  read < R :  Read > ( r :  & mut  R )  -> Result < Self ,  DecodeError >  { 
1493- 		let  a:  A  = Readable :: read ( r) ?; 
1494- 		let  b:  B  = Readable :: read ( r) ?; 
1495- 		let  c:  C  = Readable :: read ( r) ?; 
1496- 		let  d:  D  = Readable :: read ( r) ?; 
1497- 		let  e:  E  = Readable :: read ( r) ?; 
1498- 		let  f:  F  = Readable :: read ( r) ?; 
1499- 		let  g:  G  = Readable :: read ( r) ?; 
1500- 		Ok ( ( a,  b,  c,  d,  e,  f,  g) ) 
1501- 	} 
1502- } 
1503- impl < A :  Writeable ,  B :  Writeable ,  C :  Writeable ,  D :  Writeable ,  E :  Writeable ,  F :  Writeable ,  G :  Writeable >  Writeable  for  ( A ,  B ,  C ,  D ,  E ,  F ,  G )  { 
1504- 	fn  write < W :  Writer > ( & self ,  w :  & mut  W )  -> Result < ( ) ,  io:: Error >  { 
1505- 		self . 0 . write ( w) ?; 
1506- 		self . 1 . write ( w) ?; 
1507- 		self . 2 . write ( w) ?; 
1508- 		self . 3 . write ( w) ?; 
1509- 		self . 4 . write ( w) ?; 
1510- 		self . 5 . write ( w) ?; 
1511- 		self . 6 . write ( w) 
1512- 	} 
1513- } 
1427+ impl_tuple_ser ! ( a:  A ,  b:  B ) ; 
1428+ impl_tuple_ser ! ( a:  A ,  b:  B ,  c:  C ) ; 
1429+ impl_tuple_ser ! ( a:  A ,  b:  B ,  c:  C ,  d:  D ) ; 
1430+ impl_tuple_ser ! ( a:  A ,  b:  B ,  c:  C ,  d:  D ,  e:  E ) ; 
1431+ impl_tuple_ser ! ( a:  A ,  b:  B ,  c:  C ,  d:  D ,  e:  E ,  f:  F ) ; 
1432+ impl_tuple_ser ! ( a:  A ,  b:  B ,  c:  C ,  d:  D ,  e:  E ,  f:  F ,  g:  G ) ; 
15141433
15151434impl  Writeable  for  ( )  { 
15161435	fn  write < W :  Writer > ( & self ,  _:  & mut  W )  -> Result < ( ) ,  io:: Error >  { 
0 commit comments