mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-21 08:31:04 +00:00
Fix serde2_macros and benchmarks, and silence some warnings
This commit is contained in:
+27
-29
@@ -10,12 +10,10 @@ use std::io::{self, ReadExt, WriteExt};
|
|||||||
use std::num::FromPrimitive;
|
use std::num::FromPrimitive;
|
||||||
use test::Bencher;
|
use test::Bencher;
|
||||||
|
|
||||||
use serde2::de::{Deserialize, Deserializer};
|
use serde2::de::{self, Deserialize, Deserializer};
|
||||||
use serde2::de;
|
|
||||||
use serde2::json::ser::escape_str;
|
use serde2::json::ser::escape_str;
|
||||||
use serde2::json;
|
use serde2::json;
|
||||||
use serde2::ser::{Serialize, Serializer};
|
use serde2::ser::{self, Serialize, Serializer};
|
||||||
use serde2::ser;
|
|
||||||
|
|
||||||
use rustc_serialize::Encodable;
|
use rustc_serialize::Encodable;
|
||||||
|
|
||||||
@@ -70,7 +68,7 @@ impl de::Deserialize for HttpProtocol {
|
|||||||
fn deserialize<
|
fn deserialize<
|
||||||
S: Deserializer,
|
S: Deserializer,
|
||||||
>(state: &mut S) -> Result<HttpProtocol, S::Error> {
|
>(state: &mut S) -> Result<HttpProtocol, S::Error> {
|
||||||
state.visit(&mut de::PrimitiveVisitor)
|
state.visit(&mut de::PrimitiveVisitor::new())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,7 +116,7 @@ impl de::Deserialize for HttpMethod {
|
|||||||
fn deserialize<
|
fn deserialize<
|
||||||
S: de::Deserializer,
|
S: de::Deserializer,
|
||||||
>(state: &mut S) -> Result<HttpMethod, S::Error> {
|
>(state: &mut S) -> Result<HttpMethod, S::Error> {
|
||||||
state.visit(&mut de::PrimitiveVisitor)
|
state.visit(&mut de::PrimitiveVisitor::new())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,7 +157,7 @@ impl de::Deserialize for CacheStatus {
|
|||||||
fn deserialize<
|
fn deserialize<
|
||||||
S: de::Deserializer,
|
S: de::Deserializer,
|
||||||
>(state: &mut S) -> Result<CacheStatus, S::Error> {
|
>(state: &mut S) -> Result<CacheStatus, S::Error> {
|
||||||
state.visit(&mut de::PrimitiveVisitor)
|
state.visit(&mut de::PrimitiveVisitor::new())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,7 +207,7 @@ impl de::Deserialize for OriginProtocol {
|
|||||||
fn deserialize<
|
fn deserialize<
|
||||||
S: de::Deserializer,
|
S: de::Deserializer,
|
||||||
>(state: &mut S) -> Result<OriginProtocol, S::Error> {
|
>(state: &mut S) -> Result<OriginProtocol, S::Error> {
|
||||||
state.visit(&mut de::PrimitiveVisitor)
|
state.visit(&mut de::PrimitiveVisitor::new())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -251,7 +249,7 @@ impl de::Deserialize for ZonePlan {
|
|||||||
fn deserialize<
|
fn deserialize<
|
||||||
S: de::Deserializer,
|
S: de::Deserializer,
|
||||||
>(state: &mut S) -> Result<ZonePlan, S::Error> {
|
>(state: &mut S) -> Result<ZonePlan, S::Error> {
|
||||||
state.visit(&mut de::PrimitiveVisitor)
|
state.visit(&mut de::PrimitiveVisitor::new())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -544,7 +542,7 @@ impl de::Deserialize for Country {
|
|||||||
fn deserialize<
|
fn deserialize<
|
||||||
S: de::Deserializer,
|
S: de::Deserializer,
|
||||||
>(state: &mut S) -> Result<Country, S::Error> {
|
>(state: &mut S) -> Result<Country, S::Error> {
|
||||||
state.visit(&mut de::PrimitiveVisitor)
|
state.visit(&mut de::PrimitiveVisitor::new())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -677,7 +675,7 @@ fn push_all_bytes(dst: &mut Vec<u8>, src: &[u8]) {
|
|||||||
// we would have failed if `reserve` overflowed.
|
// we would have failed if `reserve` overflowed.
|
||||||
dst.set_len(dst_len + src_len);
|
dst.set_len(dst_len + src_len);
|
||||||
|
|
||||||
::std::ptr::copy_nonoverlapping_memory(
|
::std::ptr::copy_nonoverlapping(
|
||||||
dst.as_mut_ptr().offset(dst_len as isize),
|
dst.as_mut_ptr().offset(dst_len as isize),
|
||||||
src.as_ptr(),
|
src.as_ptr(),
|
||||||
src_len);
|
src_len);
|
||||||
@@ -712,7 +710,7 @@ fn test_encoder() {
|
|||||||
log.encode(&mut encoder).unwrap();
|
log.encode(&mut encoder).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_eq!(&wr[], JSON_STR);
|
assert_eq!(&wr, &JSON_STR);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
@@ -758,11 +756,11 @@ fn bench_serializer(b: &mut Bencher) {
|
|||||||
fn test_serializer_vec() {
|
fn test_serializer_vec() {
|
||||||
let log = Log::new();
|
let log = Log::new();
|
||||||
let wr = Vec::with_capacity(1024);
|
let wr = Vec::with_capacity(1024);
|
||||||
let mut serializer = json::Writer::new(wr);
|
let mut serializer = json::Serializer::new(wr);
|
||||||
serializer.visit(&log).unwrap();
|
serializer.visit(&log).unwrap();
|
||||||
|
|
||||||
let json = serializer.into_inner();
|
let json = serializer.into_inner();
|
||||||
assert_eq!(&json[], JSON_STR.as_bytes());
|
assert_eq!(&json, &JSON_STR.as_bytes());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
@@ -776,7 +774,7 @@ fn bench_serializer_vec(b: &mut Bencher) {
|
|||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
wr.clear();
|
wr.clear();
|
||||||
|
|
||||||
let mut serializer = json::Writer::new(wr.by_ref());
|
let mut serializer = json::Serializer::new(wr.by_ref());
|
||||||
serializer.visit(&log).unwrap();
|
serializer.visit(&log).unwrap();
|
||||||
let _json = serializer.into_inner();
|
let _json = serializer.into_inner();
|
||||||
});
|
});
|
||||||
@@ -792,9 +790,9 @@ fn bench_serializer_slice(b: &mut Bencher) {
|
|||||||
|
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
for item in buf.iter_mut(){ *item = 0; }
|
for item in buf.iter_mut(){ *item = 0; }
|
||||||
let mut wr = &mut buf[];
|
let mut wr = &mut buf[..];
|
||||||
|
|
||||||
let mut serializer = json::Writer::new(wr.by_ref());
|
let mut serializer = json::Serializer::new(wr.by_ref());
|
||||||
serializer.visit(&log).unwrap();
|
serializer.visit(&log).unwrap();
|
||||||
let _json = serializer.into_inner();
|
let _json = serializer.into_inner();
|
||||||
});
|
});
|
||||||
@@ -807,12 +805,12 @@ fn test_serializer_my_mem_writer0() {
|
|||||||
let mut wr = MyMemWriter0::with_capacity(1024);
|
let mut wr = MyMemWriter0::with_capacity(1024);
|
||||||
|
|
||||||
{
|
{
|
||||||
let mut serializer = json::Writer::new(wr.by_ref());
|
let mut serializer = json::Serializer::new(wr.by_ref());
|
||||||
serializer.visit(&log).unwrap();
|
serializer.visit(&log).unwrap();
|
||||||
let _json = serializer.into_inner();
|
let _json = serializer.into_inner();
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_eq!(&wr.buf[], JSON_STR.as_bytes());
|
assert_eq!(&wr.buf, &JSON_STR.as_bytes());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
@@ -826,7 +824,7 @@ fn bench_serializer_my_mem_writer0(b: &mut Bencher) {
|
|||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
wr.buf.clear();
|
wr.buf.clear();
|
||||||
|
|
||||||
let mut serializer = json::Writer::new(wr.by_ref());
|
let mut serializer = json::Serializer::new(wr.by_ref());
|
||||||
serializer.visit(&log).unwrap();
|
serializer.visit(&log).unwrap();
|
||||||
let _json = serializer.into_inner();
|
let _json = serializer.into_inner();
|
||||||
});
|
});
|
||||||
@@ -839,12 +837,12 @@ fn test_serializer_my_mem_writer1() {
|
|||||||
let mut wr = MyMemWriter1::with_capacity(1024);
|
let mut wr = MyMemWriter1::with_capacity(1024);
|
||||||
|
|
||||||
{
|
{
|
||||||
let mut serializer = json::Writer::new(wr.by_ref());
|
let mut serializer = json::Serializer::new(wr.by_ref());
|
||||||
serializer.visit(&log).unwrap();
|
serializer.visit(&log).unwrap();
|
||||||
let _json = serializer.into_inner();
|
let _json = serializer.into_inner();
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_eq!(&wr.buf[], JSON_STR.as_bytes());
|
assert_eq!(&wr.buf, &JSON_STR.as_bytes());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
@@ -858,7 +856,7 @@ fn bench_serializer_my_mem_writer1(b: &mut Bencher) {
|
|||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
wr.buf.clear();
|
wr.buf.clear();
|
||||||
|
|
||||||
let mut serializer = json::Writer::new(wr.by_ref());
|
let mut serializer = json::Serializer::new(wr.by_ref());
|
||||||
serializer.visit(&log).unwrap();
|
serializer.visit(&log).unwrap();
|
||||||
let _json = serializer.into_inner();
|
let _json = serializer.into_inner();
|
||||||
});
|
});
|
||||||
@@ -1044,7 +1042,7 @@ fn test_manual_serialize_vec_no_escape() {
|
|||||||
manual_serialize_no_escape(&mut wr, &log);
|
manual_serialize_no_escape(&mut wr, &log);
|
||||||
|
|
||||||
let json = String::from_utf8(wr).unwrap();
|
let json = String::from_utf8(wr).unwrap();
|
||||||
assert_eq!(JSON_STR, &json[]);
|
assert_eq!(&JSON_STR, &json);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
@@ -1069,7 +1067,7 @@ fn test_manual_serialize_vec_escape() {
|
|||||||
manual_serialize_escape(&mut wr, &log);
|
manual_serialize_escape(&mut wr, &log);
|
||||||
|
|
||||||
let json = String::from_utf8(wr).unwrap();
|
let json = String::from_utf8(wr).unwrap();
|
||||||
assert_eq!(JSON_STR, &json[]);
|
assert_eq!(&JSON_STR, &json);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
@@ -1095,7 +1093,7 @@ fn test_manual_serialize_my_mem_writer0_no_escape() {
|
|||||||
manual_serialize_no_escape(&mut wr, &log);
|
manual_serialize_no_escape(&mut wr, &log);
|
||||||
|
|
||||||
let json = String::from_utf8(wr.buf).unwrap();
|
let json = String::from_utf8(wr.buf).unwrap();
|
||||||
assert_eq!(JSON_STR, &json[]);
|
assert_eq!(&JSON_STR, &json);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
@@ -1121,7 +1119,7 @@ fn test_manual_serialize_my_mem_writer0_escape() {
|
|||||||
manual_serialize_escape(&mut wr, &log);
|
manual_serialize_escape(&mut wr, &log);
|
||||||
|
|
||||||
let json = String::from_utf8(wr.buf).unwrap();
|
let json = String::from_utf8(wr.buf).unwrap();
|
||||||
assert_eq!(JSON_STR, &json[]);
|
assert_eq!(&JSON_STR, &json);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
@@ -1147,7 +1145,7 @@ fn test_manual_serialize_my_mem_writer1_no_escape() {
|
|||||||
manual_serialize_no_escape(&mut wr, &log);
|
manual_serialize_no_escape(&mut wr, &log);
|
||||||
|
|
||||||
let json = String::from_utf8(wr.buf).unwrap();
|
let json = String::from_utf8(wr.buf).unwrap();
|
||||||
assert_eq!(JSON_STR, &json[]);
|
assert_eq!(&JSON_STR, &json);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
@@ -1173,7 +1171,7 @@ fn test_manual_serialize_my_mem_writer1_escape() {
|
|||||||
manual_serialize_escape(&mut wr, &log);
|
manual_serialize_escape(&mut wr, &log);
|
||||||
|
|
||||||
let json = String::from_utf8(wr.buf).unwrap();
|
let json = String::from_utf8(wr.buf).unwrap();
|
||||||
assert_eq!(JSON_STR, &json[]);
|
assert_eq!(&JSON_STR, &json);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ fn serialize_substructure(cx: &ExtCtxt,
|
|||||||
visitor,
|
visitor,
|
||||||
substr.type_ident,
|
substr.type_ident,
|
||||||
variant,
|
variant,
|
||||||
&fields[],
|
&fields,
|
||||||
generics)
|
generics)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -510,7 +510,7 @@ fn serialize_variant(
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
let impl_ident = ast_util::impl_pretty_name(&opt_trait_ref, &self_ty);
|
let impl_ident = ast_util::impl_pretty_name(&opt_trait_ref, Some(&self_ty));
|
||||||
|
|
||||||
let methods = vec![
|
let methods = vec![
|
||||||
ast::MethodImplItem(
|
ast::MethodImplItem(
|
||||||
@@ -674,7 +674,7 @@ fn deserialize_struct(
|
|||||||
type_ident,
|
type_ident,
|
||||||
struct_ident,
|
struct_ident,
|
||||||
struct_path,
|
struct_path,
|
||||||
&fields[],
|
&fields,
|
||||||
state)
|
state)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -685,7 +685,7 @@ fn deserialize_struct(
|
|||||||
type_ident,
|
type_ident,
|
||||||
struct_ident,
|
struct_ident,
|
||||||
struct_path,
|
struct_path,
|
||||||
&fields[],
|
&fields,
|
||||||
state,
|
state,
|
||||||
struct_def)
|
struct_def)
|
||||||
}
|
}
|
||||||
@@ -752,7 +752,7 @@ fn deserialize_struct_unnamed_fields(
|
|||||||
cx,
|
cx,
|
||||||
span,
|
span,
|
||||||
struct_path,
|
struct_path,
|
||||||
&field_names[],
|
&field_names,
|
||||||
);
|
);
|
||||||
|
|
||||||
quote_expr!(cx, {
|
quote_expr!(cx, {
|
||||||
@@ -835,7 +835,7 @@ fn deserialize_struct_named_fields(
|
|||||||
let field_deserializer = declare_map_field_deserializer(
|
let field_deserializer = declare_map_field_deserializer(
|
||||||
cx,
|
cx,
|
||||||
span,
|
span,
|
||||||
&field_names[],
|
&field_names,
|
||||||
fields,
|
fields,
|
||||||
struct_def,
|
struct_def,
|
||||||
);
|
);
|
||||||
@@ -844,7 +844,7 @@ fn deserialize_struct_named_fields(
|
|||||||
cx,
|
cx,
|
||||||
span,
|
span,
|
||||||
struct_path,
|
struct_path,
|
||||||
&field_names[],
|
&field_names,
|
||||||
fields,
|
fields,
|
||||||
struct_def
|
struct_def
|
||||||
);
|
);
|
||||||
@@ -1177,7 +1177,7 @@ fn deserialize_enum_variant(
|
|||||||
cx,
|
cx,
|
||||||
span,
|
span,
|
||||||
variant_path,
|
variant_path,
|
||||||
&field_names[],
|
&field_names,
|
||||||
);
|
);
|
||||||
|
|
||||||
quote_expr!(cx, {
|
quote_expr!(cx, {
|
||||||
@@ -1206,7 +1206,7 @@ fn deserialize_enum_variant(
|
|||||||
let field_deserializer = declare_map_field_deserializer(
|
let field_deserializer = declare_map_field_deserializer(
|
||||||
cx,
|
cx,
|
||||||
span,
|
span,
|
||||||
&field_names[],
|
&field_names,
|
||||||
fields,
|
fields,
|
||||||
match variant_ptr.node.kind {
|
match variant_ptr.node.kind {
|
||||||
ast::VariantKind::StructVariantKind(ref sd) => &*sd,
|
ast::VariantKind::StructVariantKind(ref sd) => &*sd,
|
||||||
@@ -1218,7 +1218,7 @@ fn deserialize_enum_variant(
|
|||||||
cx,
|
cx,
|
||||||
span,
|
span,
|
||||||
variant_path,
|
variant_path,
|
||||||
&field_names[],
|
&field_names,
|
||||||
fields,
|
fields,
|
||||||
match variant_ptr.node.kind {
|
match variant_ptr.node.kind {
|
||||||
ast::VariantKind::StructVariantKind(ref sd) => &*sd,
|
ast::VariantKind::StructVariantKind(ref sd) => &*sd,
|
||||||
|
|||||||
+10
-1
@@ -361,6 +361,15 @@ pub struct PrimitiveVisitor<T> {
|
|||||||
marker: PhantomData<T>,
|
marker: PhantomData<T>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<T> PrimitiveVisitor<T> {
|
||||||
|
#[inline]
|
||||||
|
pub fn new() -> Self {
|
||||||
|
PrimitiveVisitor {
|
||||||
|
marker: PhantomData,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<
|
impl<
|
||||||
T: Deserialize + FromPrimitive
|
T: Deserialize + FromPrimitive
|
||||||
> self::Visitor for PrimitiveVisitor<T> {
|
> self::Visitor for PrimitiveVisitor<T> {
|
||||||
@@ -387,7 +396,7 @@ macro_rules! impl_deserialize_num {
|
|||||||
fn deserialize<
|
fn deserialize<
|
||||||
D: Deserializer,
|
D: Deserializer,
|
||||||
>(deserializer: &mut D) -> Result<$ty, D::Error> {
|
>(deserializer: &mut D) -> Result<$ty, D::Error> {
|
||||||
deserializer.visit(&mut PrimitiveVisitor { marker: PhantomData })
|
deserializer.visit(&mut PrimitiveVisitor::new())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use std::error;
|
use std::error;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::old_io;
|
use std::io;
|
||||||
|
|
||||||
use de;
|
use de;
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ impl fmt::Debug for ErrorCode {
|
|||||||
pub enum Error {
|
pub enum Error {
|
||||||
/// msg, line, col
|
/// msg, line, col
|
||||||
SyntaxError(ErrorCode, usize, usize),
|
SyntaxError(ErrorCode, usize, usize),
|
||||||
IoError(old_io::IoError),
|
IoError(io::Error),
|
||||||
/*
|
/*
|
||||||
ExpectedError(String, String),
|
ExpectedError(String, String),
|
||||||
*/
|
*/
|
||||||
@@ -139,8 +139,8 @@ impl fmt::Display for Error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl error::FromError<old_io::IoError> for Error {
|
impl error::FromError<io::Error> for Error {
|
||||||
fn from_error(error: old_io::IoError) -> Error {
|
fn from_error(error: io::Error) -> Error {
|
||||||
Error::IoError(error)
|
Error::IoError(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -1108,14 +1108,14 @@ mod tests {
|
|||||||
false => vec![Token::Bool(false)],
|
false => vec![Token::Bool(false)],
|
||||||
}
|
}
|
||||||
test_isizes {
|
test_isizes {
|
||||||
0is => vec![Token::Isize(0)],
|
0isize => vec![Token::Isize(0)],
|
||||||
0i8 => vec![Token::I8(0)],
|
0i8 => vec![Token::I8(0)],
|
||||||
0i16 => vec![Token::I16(0)],
|
0i16 => vec![Token::I16(0)],
|
||||||
0i32 => vec![Token::I32(0)],
|
0i32 => vec![Token::I32(0)],
|
||||||
0i64 => vec![Token::I64(0)],
|
0i64 => vec![Token::I64(0)],
|
||||||
}
|
}
|
||||||
test_usizes {
|
test_usizes {
|
||||||
0us => vec![Token::Usize(0)],
|
0usize => vec![Token::Usize(0)],
|
||||||
0u8 => vec![Token::U8(0)],
|
0u8 => vec![Token::U8(0)],
|
||||||
0u16 => vec![Token::U16(0)],
|
0u16 => vec![Token::U16(0)],
|
||||||
0u32 => vec![Token::U32(0)],
|
0u32 => vec![Token::U32(0)],
|
||||||
@@ -1144,7 +1144,7 @@ mod tests {
|
|||||||
Token::SeqStart(0),
|
Token::SeqStart(0),
|
||||||
Token::SeqEnd,
|
Token::SeqEnd,
|
||||||
],
|
],
|
||||||
&[1, 2, 3][] => vec![
|
&[1, 2, 3][..] => vec![
|
||||||
Token::SeqStart(3),
|
Token::SeqStart(3),
|
||||||
Token::SeqSep(true),
|
Token::SeqSep(true),
|
||||||
Token::I32(1),
|
Token::I32(1),
|
||||||
|
|||||||
Reference in New Issue
Block a user