mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-17 01:01:04 +00:00
Unindent implementation inside tuple_impl_body macro
This commit is contained in:
+59
-59
@@ -1406,74 +1406,74 @@ macro_rules! tuple_impls {
|
|||||||
|
|
||||||
macro_rules! tuple_impl_body {
|
macro_rules! tuple_impl_body {
|
||||||
($len:tt => ($($n:tt $name:ident)+)) => {
|
($len:tt => ($($n:tt $name:ident)+)) => {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||||
where
|
where
|
||||||
D: Deserializer<'de>,
|
D: Deserializer<'de>,
|
||||||
{
|
{
|
||||||
struct TupleVisitor<$($name,)+> {
|
struct TupleVisitor<$($name,)+> {
|
||||||
marker: PhantomData<($($name,)+)>,
|
marker: PhantomData<($($name,)+)>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'de, $($name: Deserialize<'de>),+> Visitor<'de> for TupleVisitor<$($name,)+> {
|
impl<'de, $($name: Deserialize<'de>),+> Visitor<'de> for TupleVisitor<$($name,)+> {
|
||||||
type Value = ($($name,)+);
|
type Value = ($($name,)+);
|
||||||
|
|
||||||
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
|
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
|
||||||
formatter.write_str(concat!("a tuple of size ", $len))
|
formatter.write_str(concat!("a tuple of size ", $len))
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
#[allow(non_snake_case)]
|
|
||||||
fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
|
|
||||||
where
|
|
||||||
A: SeqAccess<'de>,
|
|
||||||
{
|
|
||||||
$(
|
|
||||||
let $name = match tri!(seq.next_element()) {
|
|
||||||
Some(value) => value,
|
|
||||||
None => return Err(Error::invalid_length($n, &self)),
|
|
||||||
};
|
|
||||||
)+
|
|
||||||
|
|
||||||
Ok(($($name,)+))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
deserializer.deserialize_tuple($len, TupleVisitor { marker: PhantomData })
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn deserialize_in_place<D>(deserializer: D, place: &mut Self) -> Result<(), D::Error>
|
#[allow(non_snake_case)]
|
||||||
|
fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
|
||||||
where
|
where
|
||||||
D: Deserializer<'de>,
|
A: SeqAccess<'de>,
|
||||||
{
|
{
|
||||||
struct TupleInPlaceVisitor<'a, $($name: 'a,)+>(&'a mut ($($name,)+));
|
$(
|
||||||
|
let $name = match tri!(seq.next_element()) {
|
||||||
|
Some(value) => value,
|
||||||
|
None => return Err(Error::invalid_length($n, &self)),
|
||||||
|
};
|
||||||
|
)+
|
||||||
|
|
||||||
impl<'a, 'de, $($name: Deserialize<'de>),+> Visitor<'de> for TupleInPlaceVisitor<'a, $($name,)+> {
|
Ok(($($name,)+))
|
||||||
type Value = ();
|
|
||||||
|
|
||||||
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
|
|
||||||
formatter.write_str(concat!("a tuple of size ", $len))
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
#[allow(non_snake_case)]
|
|
||||||
fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
|
|
||||||
where
|
|
||||||
A: SeqAccess<'de>,
|
|
||||||
{
|
|
||||||
$(
|
|
||||||
if tri!(seq.next_element_seed(InPlaceSeed(&mut (self.0).$n))).is_none() {
|
|
||||||
return Err(Error::invalid_length($n, &self));
|
|
||||||
}
|
|
||||||
)+
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
deserializer.deserialize_tuple($len, TupleInPlaceVisitor(place))
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
deserializer.deserialize_tuple($len, TupleVisitor { marker: PhantomData })
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn deserialize_in_place<D>(deserializer: D, place: &mut Self) -> Result<(), D::Error>
|
||||||
|
where
|
||||||
|
D: Deserializer<'de>,
|
||||||
|
{
|
||||||
|
struct TupleInPlaceVisitor<'a, $($name: 'a,)+>(&'a mut ($($name,)+));
|
||||||
|
|
||||||
|
impl<'a, 'de, $($name: Deserialize<'de>),+> Visitor<'de> for TupleInPlaceVisitor<'a, $($name,)+> {
|
||||||
|
type Value = ();
|
||||||
|
|
||||||
|
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
formatter.write_str(concat!("a tuple of size ", $len))
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
#[allow(non_snake_case)]
|
||||||
|
fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
|
||||||
|
where
|
||||||
|
A: SeqAccess<'de>,
|
||||||
|
{
|
||||||
|
$(
|
||||||
|
if tri!(seq.next_element_seed(InPlaceSeed(&mut (self.0).$n))).is_none() {
|
||||||
|
return Err(Error::invalid_length($n, &self));
|
||||||
|
}
|
||||||
|
)+
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
deserializer.deserialize_tuple($len, TupleInPlaceVisitor(place))
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+11
-11
@@ -399,17 +399,17 @@ macro_rules! tuple_impls {
|
|||||||
|
|
||||||
macro_rules! tuple_impl_body {
|
macro_rules! tuple_impl_body {
|
||||||
($len:expr => ($($n:tt)+)) => {
|
($len:expr => ($($n:tt)+)) => {
|
||||||
#[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
|
where
|
||||||
S: Serializer,
|
S: Serializer,
|
||||||
{
|
{
|
||||||
let mut tuple = tri!(serializer.serialize_tuple($len));
|
let mut tuple = tri!(serializer.serialize_tuple($len));
|
||||||
$(
|
$(
|
||||||
tri!(tuple.serialize_element(&self.$n));
|
tri!(tuple.serialize_element(&self.$n));
|
||||||
)+
|
)+
|
||||||
tuple.end()
|
tuple.end()
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user