From d3273b4891200c6ef0de2286392672b6d01b7f0b Mon Sep 17 00:00:00 2001 From: Toby Padilla Date: Wed, 21 Dec 2016 17:40:21 -0600 Subject: [PATCH] use built in forward_to_deserialize --- Cargo.toml | 2 +- src/decoder.rs | 42 +++++------------------------------------- src/lib.rs | 1 + 3 files changed, 7 insertions(+), 38 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 50e10bd..f9f943b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "serde_bencode" description = "A Serde backed Bencode encoding/decoding library for Rust." -version = "0.1.0" +version = "0.1.1" authors = ["Toby Padilla "] repository = "https://github.com/toby/serde-bencode" license = "MIT" diff --git a/src/decoder.rs b/src/decoder.rs index 7bacea7..c05a06b 100644 --- a/src/decoder.rs +++ b/src/decoder.rs @@ -5,15 +5,6 @@ use serde::de::{Deserializer, Deserialize, Visitor, VariantVisitor, SeqVisitor, EnumVisitor, Error}; use error::BencodeError; -macro_rules! forward_deserialize { - ($($name:ident($($arg:ident: $ty:ty,)*);)*) => { - $(#[inline] - fn $name(&mut self, $($arg: $ty,)* visitor: V) -> Result { - self.deserialize(visitor) - })* - } -} - pub type Result = result::Result; pub struct BencodeVisitor<'a, R: 'a + Read> { @@ -239,34 +230,11 @@ impl Deserializer for BencodeDecoder { } } - forward_deserialize!( - deserialize_i64(); - deserialize_string(); - deserialize_seq(); - deserialize_seq_fixed_size(_len: usize,); - deserialize_bool(); - deserialize_isize(); - deserialize_i8(); - deserialize_i16(); - deserialize_i32(); - deserialize_usize(); - deserialize_u8(); - deserialize_u16(); - deserialize_u32(); - deserialize_u64(); - deserialize_f32(); - deserialize_f64(); - deserialize_char(); - deserialize_str(); - deserialize_unit(); - deserialize_bytes(); - deserialize_map(); - deserialize_unit_struct(_name: &'static str,); - deserialize_tuple_struct(_name: &'static str, _len: usize,); - deserialize_tuple(_len: usize,); - deserialize_newtype_struct(_name: &'static str,); - deserialize_ignored_any(); - ); + forward_to_deserialize! { + i64 string seq seq_fixed_size bool isize i8 i16 i32 usize u8 u16 u32 + u64 f32 f64 char str unit bytes map unit_struct tuple_struct tuple + newtype_struct ignored_any + } #[inline] fn deserialize_option(&mut self, visitor: V) -> Result { diff --git a/src/lib.rs b/src/lib.rs index ba52495..6c71d88 100755 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,6 @@ #![feature(proc_macro)] +#[macro_use] extern crate serde; #[macro_use] extern crate serde_derive;