Switch to the new custom_deserialize syntax

This commit is contained in:
Erick Tryzelaar
2015-03-19 07:49:42 -07:00
parent c8b2ad01b5
commit 5378d22708
11 changed files with 34 additions and 65 deletions
+1 -2
View File
@@ -15,8 +15,7 @@ use Animal::{Dog, Frog};
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
#[derive(Clone, PartialEq, Debug, RustcDecodable)] #[derive(Clone, PartialEq, Debug, RustcDecodable, Deserialize)]
#[derive_deserialize]
pub enum Animal { pub enum Animal {
Dog, Dog,
Frog(String, isize) Frog(String, isize)
+3 -9
View File
@@ -17,9 +17,7 @@ use serde::ser::{self, Serialize, Serializer};
use rustc_serialize::Encodable; use rustc_serialize::Encodable;
#[derive(Debug, PartialEq, RustcEncodable, RustcDecodable)] #[derive(Debug, PartialEq, RustcEncodable, RustcDecodable, Serialize, Deserialize)]
#[derive_serialize]
#[derive_deserialize]
struct Http { struct Http {
protocol: HttpProtocol, protocol: HttpProtocol,
status: u32, status: u32,
@@ -161,9 +159,7 @@ impl de::Deserialize for CacheStatus {
} }
} }
#[derive(Debug, PartialEq, RustcEncodable, RustcDecodable)] #[derive(Debug, PartialEq, RustcEncodable, RustcDecodable, Serialize, Deserialize)]
#[derive_serialize]
#[derive_deserialize]
struct Origin { struct Origin {
ip: String, ip: String,
port: u32, port: u32,
@@ -546,9 +542,7 @@ impl de::Deserialize for Country {
} }
} }
#[derive(Debug, PartialEq, RustcEncodable, RustcDecodable)] #[derive(Debug, PartialEq, RustcEncodable, RustcDecodable, Serialize, Deserialize)]
#[derive_serialize]
#[derive_deserialize]
struct Log { struct Log {
timestamp: i64, timestamp: i64,
zone_id: u32, zone_id: u32,
+2 -4
View File
@@ -14,8 +14,7 @@ use serde::de::{Deserializer, Deserialize};
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
#[derive(Clone, PartialEq, Debug, RustcDecodable)] #[derive(Clone, PartialEq, Debug, RustcDecodable, Deserialize)]
#[derive_deserialize]
pub struct Inner { pub struct Inner {
a: (), a: (),
b: usize, b: usize,
@@ -24,8 +23,7 @@ pub struct Inner {
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
#[derive(Clone, PartialEq, Debug, RustcDecodable)] #[derive(Clone, PartialEq, Debug, RustcDecodable, Deserialize)]
#[derive_deserialize]
pub struct Outer { pub struct Outer {
inner: Vec<Inner>, inner: Vec<Inner>,
} }
+2 -2
View File
@@ -28,7 +28,7 @@ pub fn expand_derive_deserialize(
let generics = match item.node { let generics = match item.node {
ast::ItemStruct(_, ref generics) => generics, ast::ItemStruct(_, ref generics) => generics,
ast::ItemEnum(_, ref generics) => generics, ast::ItemEnum(_, ref generics) => generics,
_ => cx.bug("expected ItemStruct or ItemEnum in #[derive_deserialize]") _ => cx.bug("expected ItemStruct or ItemEnum in #[derive(Deserialize)]")
}; };
let impl_generics = builder.from_generics(generics.clone()) let impl_generics = builder.from_generics(generics.clone())
@@ -93,7 +93,7 @@ fn deserialize_body(
enum_def, enum_def,
) )
} }
_ => cx.bug("expected ItemStruct or ItemEnum in #[derive_deserialize]") _ => cx.bug("expected ItemStruct or ItemEnum in #[derive(Deserialize)]")
} }
} }
+2 -2
View File
@@ -18,10 +18,10 @@ mod field;
#[doc(hidden)] #[doc(hidden)]
pub fn plugin_registrar(reg: &mut Registry) { pub fn plugin_registrar(reg: &mut Registry) {
reg.register_syntax_extension( reg.register_syntax_extension(
token::intern("derive_serialize"), token::intern("derive_Serialize"),
Decorator(Box::new(ser::expand_derive_serialize))); Decorator(Box::new(ser::expand_derive_serialize)));
reg.register_syntax_extension( reg.register_syntax_extension(
token::intern("derive_deserialize"), token::intern("derive_Deserialize"),
Decorator(Box::new(de::expand_derive_deserialize))); Decorator(Box::new(de::expand_derive_deserialize)));
} }
+2 -2
View File
@@ -27,7 +27,7 @@ pub fn expand_derive_serialize(
let generics = match item.node { let generics = match item.node {
ast::ItemStruct(_, ref generics) => generics, ast::ItemStruct(_, ref generics) => generics,
ast::ItemEnum(_, ref generics) => generics, ast::ItemEnum(_, ref generics) => generics,
_ => cx.bug("expected ItemStruct or ItemEnum in #[derive_serialize]") _ => cx.bug("expected ItemStruct or ItemEnum in #[derive(Serialize)]")
}; };
let impl_generics = builder.from_generics(generics.clone()) let impl_generics = builder.from_generics(generics.clone())
@@ -91,7 +91,7 @@ fn serialize_body(
enum_def, enum_def,
) )
} }
_ => cx.bug("expected ItemStruct or ItemEnum in #[derive_serialize]") _ => cx.bug("expected ItemStruct or ItemEnum in #[derive(Serialize)]")
} }
} }
+2 -3
View File
@@ -46,7 +46,7 @@
//! from JSON via the serialization API. To be able to serialize a piece of data, it must implement //! from JSON via the serialization API. To be able to serialize a piece of data, it must implement
//! the `serde::Serialize` trait. To be able to deserialize a piece of data, it must implement the //! the `serde::Serialize` trait. To be able to deserialize a piece of data, it must implement the
//! `serde::Deserialize` trait. Serde provides provides an annotation to automatically generate //! `serde::Deserialize` trait. Serde provides provides an annotation to automatically generate
//! the code for these traits: `#[derive_serialize]` and `#[derive_deserialize]`. //! the code for these traits: `#[derive(Serialize, Deserialize)]`.
//! //!
//! The JSON API also provides an enum `serde::json::Value` and a method `to_value` to serialize //! The JSON API also provides an enum `serde::json::Value` and a method `to_value` to serialize
//! objects. A `serde::json::Value` value can be serialized as a string or buffer using the //! objects. A `serde::json::Value` value can be serialized as a string or buffer using the
@@ -70,8 +70,7 @@
//! use serde::json; //! use serde::json;
//! //!
//! // Automatically generate `Serialize` and `Deserialize` trait implementations //! // Automatically generate `Serialize` and `Deserialize` trait implementations
//! #[derive_serialize] //! #[derive(Serialize, Deserialize)]
//! #[derive_deserialize]
//! pub struct TestStruct { //! pub struct TestStruct {
//! data_int: u8, //! data_int: u8,
//! data_str: String, //! data_str: String,
+4 -8
View File
@@ -297,24 +297,20 @@ impl<'a, 'b> de::VariantVisitor for TokenDeserializerVariantVisitor<'a, 'b> {
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
#[derive(Copy, PartialEq, Debug)] #[derive(Copy, PartialEq, Debug, Deserialize)]
#[derive_deserialize]
struct NamedUnit; struct NamedUnit;
#[derive(PartialEq, Debug)] #[derive(PartialEq, Debug, Deserialize)]
#[derive_deserialize]
struct NamedSeq(i32, i32, i32); struct NamedSeq(i32, i32, i32);
#[derive(PartialEq, Debug)] #[derive(PartialEq, Debug, Deserialize)]
#[derive_deserialize]
struct NamedMap { struct NamedMap {
a: i32, a: i32,
b: i32, b: i32,
c: i32, c: i32,
} }
#[derive(PartialEq, Debug)] #[derive(PartialEq, Debug, Deserialize)]
#[derive_deserialize]
enum Enum { enum Enum {
Unit, Unit,
Seq(i32, i32, i32), Seq(i32, i32, i32),
+5 -14
View File
@@ -28,9 +28,7 @@ macro_rules! treemap {
}) })
} }
#[derive(Clone, Debug, PartialEq)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[derive_serialize]
#[derive_deserialize]
enum Animal { enum Animal {
Dog, Dog,
Frog(String, Vec<isize>), Frog(String, Vec<isize>),
@@ -38,18 +36,14 @@ enum Animal {
} }
#[derive(Clone, Debug, PartialEq)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[derive_serialize]
#[derive_deserialize]
struct Inner { struct Inner {
a: (), a: (),
b: usize, b: usize,
c: Vec<String>, c: Vec<String>,
} }
#[derive(Clone, Debug, PartialEq)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[derive_serialize]
#[derive_deserialize]
struct Outer { struct Outer {
inner: Vec<Inner>, inner: Vec<Inner>,
} }
@@ -903,9 +897,7 @@ fn test_parse_option() {
("\"jodhpurs\"", Some("jodhpurs".to_string())), ("\"jodhpurs\"", Some("jodhpurs".to_string())),
]); ]);
#[derive(Clone, Debug, PartialEq)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[derive_serialize]
#[derive_deserialize]
struct Foo { struct Foo {
x: Option<isize>, x: Option<isize>,
} }
@@ -990,8 +982,7 @@ fn test_multiline_errors() {
#[test] #[test]
fn test_missing_field() { fn test_missing_field() {
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq, Deserialize)]
#[derive_deserialize]
struct Foo { struct Foo {
x: Option<u32>, x: Option<u32>,
} }
+7 -15
View File
@@ -25,37 +25,30 @@ trait Trait {
} }
*/ */
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
#[derive_serialize]
#[derive_deserialize]
struct NamedUnit; struct NamedUnit;
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq, Serialize)]
#[derive_serialize]
struct SerNamedTuple<'a, 'b, A: 'a, B: 'b, C>(&'a A, &'b mut B, C); struct SerNamedTuple<'a, 'b, A: 'a, B: 'b, C>(&'a A, &'b mut B, C);
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq, Deserialize)]
#[derive_deserialize]
struct DeNamedTuple<A, B, C>(A, B, C); struct DeNamedTuple<A, B, C>(A, B, C);
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq, Serialize)]
#[derive_serialize]
struct SerNamedMap<'a, 'b, A: 'a, B: 'b, C> { struct SerNamedMap<'a, 'b, A: 'a, B: 'b, C> {
a: &'a A, a: &'a A,
b: &'b mut B, b: &'b mut B,
c: C, c: C,
} }
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq, Deserialize)]
#[derive_deserialize]
struct DeNamedMap<A, B, C> { struct DeNamedMap<A, B, C> {
a: A, a: A,
b: B, b: B,
c: C, c: C,
} }
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq, Serialize)]
#[derive_serialize]
enum SerEnum<'a, B: 'a, C: /* Trait + */ 'a, D> where D: /* Trait + */ 'a { enum SerEnum<'a, B: 'a, C: /* Trait + */ 'a, D> where D: /* Trait + */ 'a {
Unit, Unit,
Seq( Seq(
@@ -95,8 +88,7 @@ enum SerEnum<'a, B: 'a, C: /* Trait + */ 'a, D> where D: /* Trait + */ 'a {
}, },
} }
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq, Deserialize)]
#[derive_deserialize]
enum DeEnum<B, C: /* Trait */, D> /* where D: Trait */ { enum DeEnum<B, C: /* Trait */, D> /* where D: Trait */ {
Unit, Unit,
Seq( Seq(
+4 -4
View File
@@ -267,20 +267,20 @@ impl<'a> Serializer for AssertSerializer<'a> {
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
#[derive_serialize] #[derive(Serialize)]
struct NamedUnit; struct NamedUnit;
#[derive_serialize] #[derive(Serialize)]
struct NamedSeq(i32, i32, i32); struct NamedSeq(i32, i32, i32);
#[derive_serialize] #[derive(Serialize)]
struct NamedMap { struct NamedMap {
a: i32, a: i32,
b: i32, b: i32,
c: i32, c: i32,
} }
#[derive_serialize] #[derive(Serialize)]
enum Enum { enum Enum {
Unit, Unit,
Seq(i32, i32), Seq(i32, i32),