mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-13 06:41:03 +00:00
Condense the tuple impls
This commit is contained in:
+23
-177
@@ -233,22 +233,20 @@ impl Serialize for () {
|
|||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
macro_rules! tuple_impls {
|
macro_rules! tuple_impls {
|
||||||
($(
|
($($len:expr => ($($n:tt $name:ident)+))+) => {
|
||||||
$TupleVisitor:ident ($len:expr, $($T:ident),+) {
|
|
||||||
$($state:pat => $idx:tt,)+
|
|
||||||
}
|
|
||||||
)+) => {
|
|
||||||
$(
|
$(
|
||||||
impl<$($T),+> Serialize for ($($T,)+)
|
impl<$($name),+> Serialize for ($($name,)+)
|
||||||
where $($T: Serialize),+
|
where
|
||||||
|
$($name: Serialize,)+
|
||||||
{
|
{
|
||||||
#[inline]
|
#[inline]
|
||||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
where S: Serializer,
|
where
|
||||||
|
S: Serializer,
|
||||||
{
|
{
|
||||||
let mut tuple = try!(serializer.serialize_tuple($len));
|
let mut tuple = try!(serializer.serialize_tuple($len));
|
||||||
$(
|
$(
|
||||||
try!(tuple.serialize_element(&self.$idx));
|
try!(tuple.serialize_element(&self.$n));
|
||||||
)+
|
)+
|
||||||
tuple.end()
|
tuple.end()
|
||||||
}
|
}
|
||||||
@@ -258,174 +256,22 @@ macro_rules! tuple_impls {
|
|||||||
}
|
}
|
||||||
|
|
||||||
tuple_impls! {
|
tuple_impls! {
|
||||||
TupleVisitor1 (1, T0) {
|
1 => (0 T0)
|
||||||
0 => 0,
|
2 => (0 T0 1 T1)
|
||||||
}
|
3 => (0 T0 1 T1 2 T2)
|
||||||
TupleVisitor2 (2, T0, T1) {
|
4 => (0 T0 1 T1 2 T2 3 T3)
|
||||||
0 => 0,
|
5 => (0 T0 1 T1 2 T2 3 T3 4 T4)
|
||||||
1 => 1,
|
6 => (0 T0 1 T1 2 T2 3 T3 4 T4 5 T5)
|
||||||
}
|
7 => (0 T0 1 T1 2 T2 3 T3 4 T4 5 T5 6 T6)
|
||||||
TupleVisitor3 (3, T0, T1, T2) {
|
8 => (0 T0 1 T1 2 T2 3 T3 4 T4 5 T5 6 T6 7 T7)
|
||||||
0 => 0,
|
9 => (0 T0 1 T1 2 T2 3 T3 4 T4 5 T5 6 T6 7 T7 8 T8)
|
||||||
1 => 1,
|
10 => (0 T0 1 T1 2 T2 3 T3 4 T4 5 T5 6 T6 7 T7 8 T8 9 T9)
|
||||||
2 => 2,
|
11 => (0 T0 1 T1 2 T2 3 T3 4 T4 5 T5 6 T6 7 T7 8 T8 9 T9 10 T10)
|
||||||
}
|
12 => (0 T0 1 T1 2 T2 3 T3 4 T4 5 T5 6 T6 7 T7 8 T8 9 T9 10 T10 11 T11)
|
||||||
TupleVisitor4 (4, T0, T1, T2, T3) {
|
13 => (0 T0 1 T1 2 T2 3 T3 4 T4 5 T5 6 T6 7 T7 8 T8 9 T9 10 T10 11 T11 12 T12)
|
||||||
0 => 0,
|
14 => (0 T0 1 T1 2 T2 3 T3 4 T4 5 T5 6 T6 7 T7 8 T8 9 T9 10 T10 11 T11 12 T12 13 T13)
|
||||||
1 => 1,
|
15 => (0 T0 1 T1 2 T2 3 T3 4 T4 5 T5 6 T6 7 T7 8 T8 9 T9 10 T10 11 T11 12 T12 13 T13 14 T14)
|
||||||
2 => 2,
|
16 => (0 T0 1 T1 2 T2 3 T3 4 T4 5 T5 6 T6 7 T7 8 T8 9 T9 10 T10 11 T11 12 T12 13 T13 14 T14 15 T15)
|
||||||
3 => 3,
|
|
||||||
}
|
|
||||||
TupleVisitor5 (5, T0, T1, T2, T3, T4) {
|
|
||||||
0 => 0,
|
|
||||||
1 => 1,
|
|
||||||
2 => 2,
|
|
||||||
3 => 3,
|
|
||||||
4 => 4,
|
|
||||||
}
|
|
||||||
TupleVisitor6 (6, T0, T1, T2, T3, T4, T5) {
|
|
||||||
0 => 0,
|
|
||||||
1 => 1,
|
|
||||||
2 => 2,
|
|
||||||
3 => 3,
|
|
||||||
4 => 4,
|
|
||||||
5 => 5,
|
|
||||||
}
|
|
||||||
TupleVisitor7 (7, T0, T1, T2, T3, T4, T5, T6) {
|
|
||||||
0 => 0,
|
|
||||||
1 => 1,
|
|
||||||
2 => 2,
|
|
||||||
3 => 3,
|
|
||||||
4 => 4,
|
|
||||||
5 => 5,
|
|
||||||
6 => 6,
|
|
||||||
}
|
|
||||||
TupleVisitor8 (8, T0, T1, T2, T3, T4, T5, T6, T7) {
|
|
||||||
0 => 0,
|
|
||||||
1 => 1,
|
|
||||||
2 => 2,
|
|
||||||
3 => 3,
|
|
||||||
4 => 4,
|
|
||||||
5 => 5,
|
|
||||||
6 => 6,
|
|
||||||
7 => 7,
|
|
||||||
}
|
|
||||||
TupleVisitor9 (9, T0, T1, T2, T3, T4, T5, T6, T7, T8) {
|
|
||||||
0 => 0,
|
|
||||||
1 => 1,
|
|
||||||
2 => 2,
|
|
||||||
3 => 3,
|
|
||||||
4 => 4,
|
|
||||||
5 => 5,
|
|
||||||
6 => 6,
|
|
||||||
7 => 7,
|
|
||||||
8 => 8,
|
|
||||||
}
|
|
||||||
TupleVisitor10 (10, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) {
|
|
||||||
0 => 0,
|
|
||||||
1 => 1,
|
|
||||||
2 => 2,
|
|
||||||
3 => 3,
|
|
||||||
4 => 4,
|
|
||||||
5 => 5,
|
|
||||||
6 => 6,
|
|
||||||
7 => 7,
|
|
||||||
8 => 8,
|
|
||||||
9 => 9,
|
|
||||||
}
|
|
||||||
TupleVisitor11 (11, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) {
|
|
||||||
0 => 0,
|
|
||||||
1 => 1,
|
|
||||||
2 => 2,
|
|
||||||
3 => 3,
|
|
||||||
4 => 4,
|
|
||||||
5 => 5,
|
|
||||||
6 => 6,
|
|
||||||
7 => 7,
|
|
||||||
8 => 8,
|
|
||||||
9 => 9,
|
|
||||||
10 => 10,
|
|
||||||
}
|
|
||||||
TupleVisitor12 (12, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) {
|
|
||||||
0 => 0,
|
|
||||||
1 => 1,
|
|
||||||
2 => 2,
|
|
||||||
3 => 3,
|
|
||||||
4 => 4,
|
|
||||||
5 => 5,
|
|
||||||
6 => 6,
|
|
||||||
7 => 7,
|
|
||||||
8 => 8,
|
|
||||||
9 => 9,
|
|
||||||
10 => 10,
|
|
||||||
11 => 11,
|
|
||||||
}
|
|
||||||
TupleVisitor13 (13, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) {
|
|
||||||
0 => 0,
|
|
||||||
1 => 1,
|
|
||||||
2 => 2,
|
|
||||||
3 => 3,
|
|
||||||
4 => 4,
|
|
||||||
5 => 5,
|
|
||||||
6 => 6,
|
|
||||||
7 => 7,
|
|
||||||
8 => 8,
|
|
||||||
9 => 9,
|
|
||||||
10 => 10,
|
|
||||||
11 => 11,
|
|
||||||
12 => 12,
|
|
||||||
}
|
|
||||||
TupleVisitor14 (14, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) {
|
|
||||||
0 => 0,
|
|
||||||
1 => 1,
|
|
||||||
2 => 2,
|
|
||||||
3 => 3,
|
|
||||||
4 => 4,
|
|
||||||
5 => 5,
|
|
||||||
6 => 6,
|
|
||||||
7 => 7,
|
|
||||||
8 => 8,
|
|
||||||
9 => 9,
|
|
||||||
10 => 10,
|
|
||||||
11 => 11,
|
|
||||||
12 => 12,
|
|
||||||
13 => 13,
|
|
||||||
}
|
|
||||||
TupleVisitor15 (15, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) {
|
|
||||||
0 => 0,
|
|
||||||
1 => 1,
|
|
||||||
2 => 2,
|
|
||||||
3 => 3,
|
|
||||||
4 => 4,
|
|
||||||
5 => 5,
|
|
||||||
6 => 6,
|
|
||||||
7 => 7,
|
|
||||||
8 => 8,
|
|
||||||
9 => 9,
|
|
||||||
10 => 10,
|
|
||||||
11 => 11,
|
|
||||||
12 => 12,
|
|
||||||
13 => 13,
|
|
||||||
14 => 14,
|
|
||||||
}
|
|
||||||
TupleVisitor16 (16, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) {
|
|
||||||
0 => 0,
|
|
||||||
1 => 1,
|
|
||||||
2 => 2,
|
|
||||||
3 => 3,
|
|
||||||
4 => 4,
|
|
||||||
5 => 5,
|
|
||||||
6 => 6,
|
|
||||||
7 => 7,
|
|
||||||
8 => 8,
|
|
||||||
9 => 9,
|
|
||||||
10 => 10,
|
|
||||||
11 => 11,
|
|
||||||
12 => 12,
|
|
||||||
13 => 13,
|
|
||||||
14 => 14,
|
|
||||||
15 => 15,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
Reference in New Issue
Block a user