diff --git a/Cargo.toml b/Cargo.toml index abea5a8..f0e42fa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,4 @@ [package] - -name = "writer_encoder" +name = "binary_encode" version = "0.0.1" authors = ["Ty Overby "] diff --git a/src/lib.rs b/src/lib.rs index 9fd29b5..ab8629a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -7,8 +7,6 @@ use std::io::MemReader; use std::io::IoError; use serialize::Encodable; use serialize::Decodable; -use serialize::Encoder; -use serialize::Decoder; pub use writer::EncoderWriter; pub use reader::DecoderReader; @@ -16,17 +14,18 @@ pub use reader::DecoderReader; mod writer; mod reader; -pub fn encode, IoError>>(t: &T) -> Result, IoError> { +pub fn encode, IoError>>(t: &T) -> +Result, IoError> { match encode_into(t, MemWriter::new()) { Ok(w) => Ok(w.unwrap()), - Err((w, e)) => Err(e) + Err((_, e)) => Err(e) } } pub fn decode, IoError>>(b: Vec) -> -Result<(T, Vec), (IoError, Vec)> { +Result)> { match decode_from(MemReader::new(b)) { - Ok((t, r)) => Ok((t, r.unwrap())), + Ok((t, _)) => Ok(t), Err((e, r)) => Err((e, r.unwrap())) } } @@ -41,7 +40,8 @@ pub fn encode_into, IoError>> } } -pub fn decode_from, IoError>>(r: R) -> Result<(T, R), (IoError, R)> { +pub fn decode_from, IoError>>(r: R) -> +Result<(T, R), (IoError, R)> { let mut reader = reader::DecoderReader::new(r); let x: Result = Decodable::decode(&mut reader); let mem = reader.unwrap(); diff --git a/src/reader.rs b/src/reader.rs index 6034542..a766aa1 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -2,7 +2,6 @@ use std::io::Reader; use std::io::BufferedReader; use std::io::IoError; use std::io::OtherIoError; -use std::io::RefReader; use serialize::Decoder; type EwResult = Result<(), IoError>; @@ -79,64 +78,84 @@ impl Decoder for DecoderReader { } Ok(string) } - fn read_enum(&mut self, name: &str, f: |&mut DecoderReader| -> Result) -> Result { + fn read_enum(&mut self, _: &str, + f: |&mut DecoderReader| -> Result) -> Result { f(self) } - fn read_enum_variant(&mut self, names: &[&str], f: |&mut DecoderReader, uint| -> Result) -> Result { + fn read_enum_variant(&mut self, _: &[&str], + f: |&mut DecoderReader, uint| -> Result) -> Result { let id = try!(self.reader.read_be_uint()); - //let len = try!(self.reader.read_be_uint()); f(self, id) } - fn read_enum_variant_arg(&mut self, a_idx: uint, f: |&mut DecoderReader| -> Result) -> Result { - let idx = try!(self.reader.read_be_uint()); + fn read_enum_variant_arg(&mut self, _: uint, + f: |&mut DecoderReader| -> Result) -> Result { f(self) } - fn read_enum_struct_variant(&mut self, names: &[&str], f: |&mut DecoderReader, uint| -> Result) -> Result { + fn read_enum_struct_variant(&mut self, names: &[&str], + f: |&mut DecoderReader, uint| -> Result) -> Result { self.read_enum_variant(names, f) } - fn read_enum_struct_variant_field(&mut self, f_name: &str, f_idx: uint, f: |&mut DecoderReader| -> Result) -> Result { + fn read_enum_struct_variant_field(&mut self, _: &str, f_idx: uint, + f: |&mut DecoderReader| -> Result) -> Result { self.read_enum_variant_arg(f_idx, f) } - fn read_struct(&mut self, s_name: &str, len: uint, f: |&mut DecoderReader| -> Result) -> Result { + fn read_struct(&mut self, _: &str, _: uint, + f: |&mut DecoderReader| -> Result) -> Result { f(self) } - fn read_struct_field(&mut self, f_name: &str, f_idx: uint, f: |&mut DecoderReader| -> Result) -> Result { + fn read_struct_field(&mut self, _: &str, _: uint, + f: |&mut DecoderReader| -> Result) -> Result { f(self) } - fn read_tuple(&mut self, f: |&mut DecoderReader, uint| -> Result) -> Result { + fn read_tuple(&mut self, + f: |&mut DecoderReader, uint| -> Result) -> + Result { let len = try!(self.reader.read_be_uint()); f(self, len) } - fn read_tuple_arg(&mut self, a_idx: uint, f: |&mut DecoderReader| -> Result) -> Result { + fn read_tuple_arg(&mut self, _: uint, + f: |&mut DecoderReader| -> Result) -> Result { f(self) } - fn read_tuple_struct(&mut self, s_name: &str, f: |&mut DecoderReader, uint| -> Result) -> Result { + fn read_tuple_struct(&mut self, _: &str, + f: |&mut DecoderReader, uint| -> Result) -> + Result { self.read_tuple(f) } - fn read_tuple_struct_arg(&mut self, a_idx: uint, f: |&mut DecoderReader| -> Result) -> Result { + fn read_tuple_struct_arg(&mut self, a_idx: uint, + f: |&mut DecoderReader| -> Result) -> Result { self.read_tuple_arg(a_idx, f) } - fn read_option(&mut self, f: |&mut DecoderReader, bool| -> Result) -> Result { + fn read_option(&mut self, + f: |&mut DecoderReader, bool| -> Result) -> + Result { match try!(self.reader.read_u8()) { 1 => f(self, true), _ => f(self, false) } } - fn read_seq(&mut self, f: |&mut DecoderReader, uint| -> Result) -> Result { + fn read_seq(&mut self, + f: |&mut DecoderReader, uint| -> Result) -> + Result { let len = try!(self.reader.read_be_uint()); f(self, len) } - fn read_seq_elt(&mut self, idx: uint, f: |&mut DecoderReader| -> Result) -> Result { + fn read_seq_elt(&mut self, _: uint, + f: |&mut DecoderReader| -> Result) -> Result { f(self) } - fn read_map(&mut self, f: |&mut DecoderReader, uint| -> Result) -> Result { + fn read_map(&mut self, + f: |&mut DecoderReader, uint| -> Result) -> + Result { let len = try!(self.reader.read_be_uint()); f(self, len) } - fn read_map_elt_key(&mut self, idx: uint, f: |&mut DecoderReader| -> Result) -> Result { + fn read_map_elt_key(&mut self, _: uint, + f: |&mut DecoderReader| -> Result) -> Result { f(self) } - fn read_map_elt_val(&mut self, idx: uint, f: |&mut DecoderReader| -> Result) -> Result { + fn read_map_elt_val(&mut self, _: uint, + f: |&mut DecoderReader| -> Result) -> Result { f(self) } fn error(&mut self, err: &str) -> IoError { diff --git a/src/test.rs b/src/test.rs index cbc50d8..4015993 100644 --- a/src/test.rs +++ b/src/test.rs @@ -13,22 +13,14 @@ use serialize::{ use super::EncoderWriter; use super::DecoderReader; +use super::encode; +use super::decode; fn the_same< V: Encodable, IoError> + Decodable, IoError> + PartialEq + Show>(element: V) { - let mem_w = MemWriter::new(); - let mut writer = EncoderWriter::new(mem_w); - element.encode(&mut writer); - - let bytes = writer.unwrap().unwrap(); - let mem_r = MemReader::new(bytes); - let mut reader = DecoderReader::new(mem_r); - - let decoded = Decodable::decode(&mut reader).unwrap(); - println!("{}, -> {}", element, decoded); - assert!(element == decoded); + assert!(element == decode(encode(&element).unwrap()).unwrap()); } #[test] diff --git a/src/writer.rs b/src/writer.rs index ad99dfa..222364e 100644 --- a/src/writer.rs +++ b/src/writer.rs @@ -66,91 +66,85 @@ impl Encoder for EncoderWriter { try!(self.writer.write_be_uint(v.len())); self.writer.write_str(v) } - fn emit_enum(&mut self, name: &str, - f: |&mut EncoderWriter| -> EwResult) -> EwResult { + fn emit_enum(&mut self, _: &str, + f: |&mut EncoderWriter| -> EwResult) -> EwResult { f(self) } fn emit_enum_variant(&mut self, - v_name: &str, v_id: uint, len: uint, - f: |&mut EncoderWriter| -> EwResult) -> EwResult { + _: &str, v_id: uint, _: uint, + f: |&mut EncoderWriter| -> EwResult) -> EwResult { try!(self.writer.write_be_uint(v_id)); - //try!(self.writer.write_be_uint(len)); f(self) } - fn emit_enum_variant_arg(&mut self, a_idx: uint, - f: |&mut EncoderWriter| -> EwResult) -> EwResult { - try!(self.writer.write_be_uint(a_idx)); + fn emit_enum_variant_arg(&mut self, _: uint, + f: |&mut EncoderWriter| -> EwResult) -> EwResult { f(self) } - fn emit_enum_struct_variant(&mut self, v_name: &str, v_id: uint, - len: uint, f: |&mut EncoderWriter| -> EwResult) -> EwResult { - try!(self.writer.write_be_uint(v_id)); - try!(self.writer.write_str(v_name)); + fn emit_enum_struct_variant(&mut self, _: &str, _: uint, + _: uint, f: |&mut EncoderWriter| -> EwResult) -> EwResult { f(self) } - fn emit_enum_struct_variant_field(&mut self, f_name: &str, - f_idx: uint, f: |&mut EncoderWriter| -> EwResult) -> EwResult { - try!(self.writer.write_be_uint(f_idx)); - try!(self.writer.write_str(f_name)); + fn emit_enum_struct_variant_field(&mut self, _: &str, + _: uint, f: |&mut EncoderWriter| -> EwResult) -> EwResult { f(self) } - fn emit_struct(&mut self, name: &str, len: uint, - f: |&mut EncoderWriter| -> EwResult) -> EwResult { + fn emit_struct(&mut self, _: &str, _: uint, + f: |&mut EncoderWriter| -> EwResult) -> EwResult { f(self) } - fn emit_struct_field(&mut self, f_name: &str, f_idx: uint, - f: |&mut EncoderWriter| -> EwResult) -> EwResult { + fn emit_struct_field(&mut self, _: &str, _: uint, + f: |&mut EncoderWriter| -> EwResult) -> EwResult { f(self) } fn emit_tuple(&mut self, len: uint, - f: |&mut EncoderWriter| -> EwResult) -> EwResult { + f: |&mut EncoderWriter| -> EwResult) -> EwResult { try!(self.writer.write_be_uint(len)); f(self) } - fn emit_tuple_arg(&mut self, idx: uint, - f: |&mut EncoderWriter| -> EwResult) -> EwResult { + fn emit_tuple_arg(&mut self, _: uint, + f: |&mut EncoderWriter| -> EwResult) -> EwResult { f(self) } - fn emit_tuple_struct(&mut self, name: &str, len: uint, - f: |&mut EncoderWriter| -> EwResult) -> EwResult { + fn emit_tuple_struct(&mut self, _: &str, len: uint, + f: |&mut EncoderWriter| -> EwResult) -> EwResult { self.emit_tuple(len, f) } fn emit_tuple_struct_arg(&mut self, f_idx: uint, - f: |&mut EncoderWriter| -> EwResult) -> EwResult { + f: |&mut EncoderWriter| -> EwResult) -> EwResult { self.emit_tuple_arg(f_idx, f) } fn emit_option(&mut self, - f: |&mut EncoderWriter| -> EwResult) -> EwResult { + f: |&mut EncoderWriter| -> EwResult) -> EwResult { f(self) } fn emit_option_none(&mut self) -> EwResult { self.writer.write_u8(0) } fn emit_option_some(&mut self, - f: |&mut EncoderWriter| -> EwResult) -> EwResult { + f: |&mut EncoderWriter| -> EwResult) -> EwResult { try!(self.writer.write_u8(1)); f(self) } fn emit_seq(&mut self, len: uint, - f: |this: &mut EncoderWriter| -> EwResult) -> EwResult { + f: |this: &mut EncoderWriter| -> EwResult) -> EwResult { try!(self.writer.write_be_uint(len)); f(self) } - fn emit_seq_elt(&mut self, idx: uint, - f: |this: &mut EncoderWriter| -> EwResult) -> EwResult { + fn emit_seq_elt(&mut self, _: uint, + f: |this: &mut EncoderWriter| -> EwResult) -> EwResult { f(self) } fn emit_map(&mut self, len: uint, - f: |&mut EncoderWriter| -> EwResult) -> EwResult { + f: |&mut EncoderWriter| -> EwResult) -> EwResult { try!(self.writer.write_be_uint(len)); f(self) } - fn emit_map_elt_key(&mut self, idx: uint, - f: |&mut EncoderWriter| -> EwResult) -> EwResult { + fn emit_map_elt_key(&mut self, _: uint, + f: |&mut EncoderWriter| -> EwResult) -> EwResult { f(self) } - fn emit_map_elt_val(&mut self, idx: uint, - f: |&mut EncoderWriter| -> EwResult) -> EwResult { + fn emit_map_elt_val(&mut self, _: uint, + f: |&mut EncoderWriter| -> EwResult) -> EwResult { f(self) } }