Rename visit_enum_simple to visit_newtype_variant

This commit is contained in:
Erick Tryzelaar
2015-07-29 14:45:29 -07:00
parent 6cbb72decf
commit fefc010deb
6 changed files with 31 additions and 31 deletions
+2 -2
View File
@@ -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)
} }
} }
} }
+8 -5
View File
@@ -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(
+1 -1
View File
@@ -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,
+5 -6
View File
@@ -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'{'));
+5 -6
View File
@@ -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();
+10 -11
View File
@@ -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,