mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-14 15:11:02 +00:00
Rename visit_enum_simple to visit_newtype_variant
This commit is contained in:
@@ -632,10 +632,10 @@ impl<T, E> Serialize for Result<T, E> where T: Serialize, E: Serialize {
|
|||||||
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer {
|
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer {
|
||||||
match *self {
|
match *self {
|
||||||
Result::Ok(ref value) => {
|
Result::Ok(ref value) => {
|
||||||
serializer.visit_enum_simple("Result", 0, "Ok", value)
|
serializer.visit_newtype_variant("Result", 0, "Ok", value)
|
||||||
}
|
}
|
||||||
Result::Err(ref value) => {
|
Result::Err(ref value) => {
|
||||||
serializer.visit_enum_simple("Result", 1, "Err", value)
|
serializer.visit_newtype_variant("Result", 1, "Err", value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -125,12 +125,15 @@ pub trait Serializer {
|
|||||||
self.visit_unit()
|
self.visit_unit()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The `visit_newtype_variant` allows a variant with a single item to be more efficiently
|
||||||
|
/// serialized than a variant with multiple items. By default it just serializes the value as a
|
||||||
|
/// tuple variant sequence.
|
||||||
#[inline]
|
#[inline]
|
||||||
fn visit_enum_simple<T>(&mut self,
|
fn visit_newtype_variant<T>(&mut self,
|
||||||
name: &'static str,
|
name: &'static str,
|
||||||
variant_index: usize,
|
variant_index: usize,
|
||||||
variant: &'static str,
|
variant: &'static str,
|
||||||
value: T) -> Result<(), Self::Error>
|
value: T) -> Result<(), Self::Error>
|
||||||
where T: Serialize,
|
where T: Serialize,
|
||||||
{
|
{
|
||||||
self.visit_tuple_variant(
|
self.visit_tuple_variant(
|
||||||
|
|||||||
@@ -306,7 +306,7 @@ fn serialize_variant(
|
|||||||
.build();
|
.build();
|
||||||
quote_arm!(cx,
|
quote_arm!(cx,
|
||||||
$pat => {
|
$pat => {
|
||||||
::serde::ser::Serializer::visit_enum_simple(
|
::serde::ser::Serializer::visit_newtype_variant(
|
||||||
serializer,
|
serializer,
|
||||||
$type_name,
|
$type_name,
|
||||||
$variant_index,
|
$variant_index,
|
||||||
|
|||||||
@@ -172,12 +172,11 @@ impl<W, F> ser::Serializer for Serializer<W, F>
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn visit_enum_simple<T>(&mut self,
|
fn visit_newtype_variant<T>(&mut self,
|
||||||
_name: &str,
|
_name: &str,
|
||||||
_variant_index: usize,
|
_variant_index: usize,
|
||||||
variant: &str,
|
variant: &str,
|
||||||
value: T,
|
value: T) -> io::Result<()>
|
||||||
) -> io::Result<()>
|
|
||||||
where T: ser::Serialize,
|
where T: ser::Serialize,
|
||||||
{
|
{
|
||||||
try!(self.formatter.open(&mut self.writer, b'{'));
|
try!(self.formatter.open(&mut self.writer, b'{'));
|
||||||
|
|||||||
@@ -472,12 +472,11 @@ impl ser::Serializer for Serializer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn visit_enum_simple<T>(&mut self,
|
fn visit_newtype_variant<T>(&mut self,
|
||||||
_name: &str,
|
_name: &str,
|
||||||
_variant_index: usize,
|
_variant_index: usize,
|
||||||
variant: &str,
|
variant: &str,
|
||||||
value: T,
|
value: T) -> Result<(), ()>
|
||||||
) -> Result<(), ()>
|
|
||||||
where T: ser::Serialize,
|
where T: ser::Serialize,
|
||||||
{
|
{
|
||||||
let mut values = BTreeMap::new();
|
let mut values = BTreeMap::new();
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ pub enum Token<'a> {
|
|||||||
UnitStruct(&'a str),
|
UnitStruct(&'a str),
|
||||||
EnumUnit(&'a str, &'a str),
|
EnumUnit(&'a str, &'a str),
|
||||||
|
|
||||||
EnumSimple(&'a str, &'a str),
|
EnumNewtype(&'a str, &'a str),
|
||||||
|
|
||||||
SeqStart(Option<usize>),
|
SeqStart(Option<usize>),
|
||||||
TupleStructStart(&'a str, Option<usize>),
|
TupleStructStart(&'a str, Option<usize>),
|
||||||
@@ -82,15 +82,14 @@ impl<'a> Serializer for AssertSerializer<'a> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn visit_enum_simple<T>(&mut self,
|
fn visit_newtype_variant<T>(&mut self,
|
||||||
name: &str,
|
name: &str,
|
||||||
_variant_index: usize,
|
_variant_index: usize,
|
||||||
variant: &str,
|
variant: &str,
|
||||||
value: T,
|
value: T) -> Result<(), ()>
|
||||||
) -> Result<(), ()>
|
|
||||||
where T: Serialize,
|
where T: Serialize,
|
||||||
{
|
{
|
||||||
assert_eq!(self.iter.next(), Some(Token::EnumSimple(name, variant)));
|
assert_eq!(self.iter.next(), Some(Token::EnumNewtype(name, variant)));
|
||||||
value.serialize(self)
|
value.serialize(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -397,11 +396,11 @@ declare_tests! {
|
|||||||
}
|
}
|
||||||
test_result {
|
test_result {
|
||||||
Ok::<i32, i32>(0) => vec![
|
Ok::<i32, i32>(0) => vec![
|
||||||
Token::EnumSimple("Result", "Ok"),
|
Token::EnumNewtype("Result", "Ok"),
|
||||||
Token::I32(0),
|
Token::I32(0),
|
||||||
],
|
],
|
||||||
Err::<i32, i32>(1) => vec![
|
Err::<i32, i32>(1) => vec![
|
||||||
Token::EnumSimple("Result", "Err"),
|
Token::EnumNewtype("Result", "Err"),
|
||||||
Token::I32(1),
|
Token::I32(1),
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
@@ -565,7 +564,7 @@ declare_tests! {
|
|||||||
}
|
}
|
||||||
test_enum {
|
test_enum {
|
||||||
Enum::Unit => vec![Token::EnumUnit("Enum", "Unit")],
|
Enum::Unit => vec![Token::EnumUnit("Enum", "Unit")],
|
||||||
Enum::One(42) => vec![Token::EnumSimple("Enum", "One"), Token::I32(42)],
|
Enum::One(42) => vec![Token::EnumNewtype("Enum", "One"), Token::I32(42)],
|
||||||
Enum::Seq(1, 2) => vec![
|
Enum::Seq(1, 2) => vec![
|
||||||
Token::EnumSeqStart("Enum", "Seq", Some(2)),
|
Token::EnumSeqStart("Enum", "Seq", Some(2)),
|
||||||
Token::SeqSep,
|
Token::SeqSep,
|
||||||
|
|||||||
Reference in New Issue
Block a user