diff --git a/src/bench_bytes.rs b/src/bench_bytes.rs deleted file mode 100644 index e5ef0008..00000000 --- a/src/bench_bytes.rs +++ /dev/null @@ -1,227 +0,0 @@ -use test::Bencher; - -use serialize::Decodable; - -use de::{Deserializable}; - -////////////////////////////////////////////////////////////////////////////// - -#[deriving(Show)] -enum Error { - EndOfStream, - SyntaxError, -} - -////////////////////////////////////////////////////////////////////////////// - -mod decoder { - use std::vec; - use serialize::Decoder; - - use super::{Error, EndOfStream, SyntaxError}; - - pub struct BytesDecoder { - iter: vec::MoveItems, - } - - impl BytesDecoder { - #[inline] - pub fn new(values: Vec) -> BytesDecoder { - BytesDecoder { - iter: values.move_iter() - } - } - } - - impl Decoder for BytesDecoder { - // Primitive types: - fn read_nil(&mut self) -> Result<(), Error> { Err(SyntaxError) } - fn read_uint(&mut self) -> Result { Err(SyntaxError) } - fn read_u64(&mut self) -> Result { Err(SyntaxError) } - fn read_u32(&mut self) -> Result { Err(SyntaxError) } - fn read_u16(&mut self) -> Result { Err(SyntaxError) } - #[inline] - fn read_u8(&mut self) -> Result { - match self.iter.next() { - Some(value) => Ok(value), - None => Err(EndOfStream), - } - } - fn read_int(&mut self) -> Result { Err(SyntaxError) } - fn read_i64(&mut self) -> Result { Err(SyntaxError) } - fn read_i32(&mut self) -> Result { Err(SyntaxError) } - fn read_i16(&mut self) -> Result { Err(SyntaxError) } - fn read_i8(&mut self) -> Result { Err(SyntaxError) } - fn read_bool(&mut self) -> Result { Err(SyntaxError) } - fn read_f64(&mut self) -> Result { Err(SyntaxError) } - fn read_f32(&mut self) -> Result { Err(SyntaxError) } - fn read_char(&mut self) -> Result { Err(SyntaxError) } - fn read_str(&mut self) -> Result { Err(SyntaxError) } - - // Compound types: - fn read_enum(&mut self, _name: &str, _f: |&mut BytesDecoder| -> Result) -> Result { Err(SyntaxError) } - - fn read_enum_variant(&mut self, - _names: &[&str], - _f: |&mut BytesDecoder, uint| -> Result) - -> Result { Err(SyntaxError) } - fn read_enum_variant_arg(&mut self, - _a_idx: uint, - _f: |&mut BytesDecoder| -> Result) - -> Result { Err(SyntaxError) } - - fn read_enum_struct_variant(&mut self, - _names: &[&str], - _f: |&mut BytesDecoder, uint| -> Result) - -> Result { Err(SyntaxError) } - fn read_enum_struct_variant_field(&mut self, - _f_name: &str, - _f_idx: uint, - _f: |&mut BytesDecoder| -> Result) - -> Result { Err(SyntaxError) } - - fn read_struct(&mut self, _s_name: &str, _len: uint, _f: |&mut BytesDecoder| -> Result) - -> Result { Err(SyntaxError) } - fn read_struct_field(&mut self, - _f_name: &str, - _f_idx: uint, - _f: |&mut BytesDecoder| -> Result) - -> Result { Err(SyntaxError) } - - fn read_tuple(&mut self, _f: |&mut BytesDecoder, uint| -> Result) -> Result { Err(SyntaxError) } - fn read_tuple_arg(&mut self, _a_idx: uint, _f: |&mut BytesDecoder| -> Result) -> Result { Err(SyntaxError) } - - fn read_tuple_struct(&mut self, - _s_name: &str, - _f: |&mut BytesDecoder, uint| -> Result) - -> Result { Err(SyntaxError) } - fn read_tuple_struct_arg(&mut self, - _a_idx: uint, - _f: |&mut BytesDecoder| -> Result) - -> Result { Err(SyntaxError) } - - // Specialized types: - fn read_option(&mut self, _f: |&mut BytesDecoder, bool| -> Result) -> Result { Err(SyntaxError) } - - #[inline] - fn read_seq(&mut self, f: |&mut BytesDecoder, uint| -> Result) -> Result { - f(self, 3) - } - #[inline] - fn read_seq_elt(&mut self, _idx: uint, f: |&mut BytesDecoder| -> Result) -> Result { - f(self) - } - - fn read_map(&mut self, _f: |&mut BytesDecoder, uint| -> Result) -> Result { Err(SyntaxError) } - fn read_map_elt_key(&mut self, _idx: uint, _f: |&mut BytesDecoder| -> Result) -> Result { Err(SyntaxError) } - fn read_map_elt_val(&mut self, _idx: uint, _f: |&mut BytesDecoder| -> Result) -> Result { Err(SyntaxError) } - } -} - -////////////////////////////////////////////////////////////////////////////// - -mod deserializer { - use std::num; - use std::vec; - - use super::{Error, EndOfStream, SyntaxError}; - - use de; - - #[deriving(Eq, Show)] - enum State { - StartState, - SepOrEndState, - EndState, - } - - pub struct BytesDeserializer { - state: State, - len: uint, - iter: vec::MoveItems, - } - - impl BytesDeserializer { - #[inline] - pub fn new(values: Vec) -> BytesDeserializer { - BytesDeserializer { - state: StartState, - len: values.len(), - iter: values.move_iter(), - } - } - } - - impl Iterator> for BytesDeserializer { - #[inline] - fn next(&mut self) -> Option> { - match self.state { - StartState => { - self.state = SepOrEndState; - Some(Ok(de::SeqStart(self.len))) - } - SepOrEndState => { - match self.iter.next() { - Some(value) => { - Some(Ok(de::Int(value))) - } - None => { - self.state = EndState; - Some(Ok(de::End)) - } - } - } - EndState => { - None - } - } - } - } - - impl de::Deserializer for BytesDeserializer { - #[inline] - fn end_of_stream_error(&self) -> Error { - EndOfStream - } - - #[inline] - fn syntax_error(&self, _token: de::Token, _msg: &'static str) -> Error { - SyntaxError - } - - #[inline] - fn missing_field_error(&mut self, _field: &'static str) -> Error { - SyntaxError - } - } -} - -////////////////////////////////////////////////////////////////////////////// - -fn run_bench_decoder(bytes: Vec) { - let mut d = decoder::BytesDecoder::new(bytes.clone()); - let value: Vec = Decodable::decode(&mut d).unwrap(); - - assert_eq!(value, bytes); -} - -fn run_bench_deserializer(bytes: Vec) { - let mut d = deserializer::BytesDeserializer::new(bytes.clone()); - let value: Vec = Deserializable::deserialize(&mut d).unwrap(); - - assert_eq!(value, bytes); -} - -#[bench] -fn bench_bytes_decoder_empty(b: &mut Bencher) { - b.iter(|| { - run_bench_decoder(vec!()) - }) -} - -#[bench] -fn bench_bytes_deserializer_empty(b: &mut Bencher) { - b.iter(|| { - run_bench_deserializer(vec!()) - }) -} diff --git a/src/lib.rs b/src/lib.rs index 61b32b25..bf6cb389 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -25,9 +25,6 @@ pub mod de; pub mod ser; pub mod json; -//#[cfg(test)] -//pub mod bench_bytes; - #[cfg(test)] pub mod bench_enum;