From 7750a0d0a6d8f943023239237124a3489b88aaf2 Mon Sep 17 00:00:00 2001 From: ljedrz Date: Fri, 27 Jul 2018 14:41:31 +0200 Subject: [PATCH] Improve readability of serialize.rs --- src/libserialize/serialize.rs | 201 ++++++++++++++++++++-------------- 1 file changed, 117 insertions(+), 84 deletions(-) diff --git a/src/libserialize/serialize.rs b/src/libserialize/serialize.rs index 7341dec5156..ed94194ffcc 100644 --- a/src/libserialize/serialize.rs +++ b/src/libserialize/serialize.rs @@ -46,58 +46,67 @@ pub trait Encoder { // Compound types: fn emit_enum(&mut self, _name: &str, f: F) -> Result<(), Self::Error> - where F: FnOnce(&mut Self) -> Result<(), Self::Error> { f(self) } - - fn emit_enum_variant(&mut self, _v_name: &str, - v_id: usize, - _len: usize, - f: F) -> Result<(), Self::Error> where F: FnOnce(&mut Self) -> Result<(), Self::Error> + { + f(self) + } + + fn emit_enum_variant(&mut self, _v_name: &str, v_id: usize, _len: usize, f: F) + -> Result<(), Self::Error> where F: FnOnce(&mut Self) -> Result<(), Self::Error> { self.emit_usize(v_id)?; f(self) } - fn emit_enum_variant_arg(&mut self, _a_idx: usize, f: F) - -> Result<(), Self::Error> - where F: FnOnce(&mut Self) -> Result<(), Self::Error> { f(self) } - fn emit_enum_struct_variant(&mut self, v_name: &str, - v_id: usize, - len: usize, - f: F) -> Result<(), Self::Error> + fn emit_enum_variant_arg(&mut self, _a_idx: usize, f: F) -> Result<(), Self::Error> where F: FnOnce(&mut Self) -> Result<(), Self::Error> + { + f(self) + } + + fn emit_enum_struct_variant(&mut self, v_name: &str, v_id: usize, len: usize, f: F) + -> Result<(), Self::Error> where F: FnOnce(&mut Self) -> Result<(), Self::Error> { self.emit_enum_variant(v_name, v_id, len, f) } - fn emit_enum_struct_variant_field(&mut self, - _f_name: &str, - f_idx: usize, - f: F) -> Result<(), Self::Error> - where F: FnOnce(&mut Self) -> Result<(), Self::Error> + + fn emit_enum_struct_variant_field(&mut self, _f_name: &str, f_idx: usize, f: F) + -> Result<(), Self::Error> where F: FnOnce(&mut Self) -> Result<(), Self::Error> { self.emit_enum_variant_arg(f_idx, f) } - fn emit_struct(&mut self, _name: &str, _len: usize, f: F) - -> Result<(), Self::Error> - where F: FnOnce(&mut Self) -> Result<(), Self::Error> { f(self) } + fn emit_struct(&mut self, _name: &str, _len: usize, f: F) -> Result<(), Self::Error> + where F: FnOnce(&mut Self) -> Result<(), Self::Error> + { + f(self) + } + fn emit_struct_field(&mut self, _f_name: &str, _f_idx: usize, f: F) - -> Result<(), Self::Error> - where F: FnOnce(&mut Self) -> Result<(), Self::Error> { f(self) } + -> Result<(), Self::Error> where F: FnOnce(&mut Self) -> Result<(), Self::Error> + { + f(self) + } fn emit_tuple(&mut self, _len: usize, f: F) -> Result<(), Self::Error> - where F: FnOnce(&mut Self) -> Result<(), Self::Error> { f(self) } - fn emit_tuple_arg(&mut self, _idx: usize, f: F) -> Result<(), Self::Error> - where F: FnOnce(&mut Self) -> Result<(), Self::Error> { f(self) } + where F: FnOnce(&mut Self) -> Result<(), Self::Error> + { + f(self) + } - fn emit_tuple_struct(&mut self, _name: &str, len: usize, f: F) - -> Result<(), Self::Error> + fn emit_tuple_arg(&mut self, _idx: usize, f: F) -> Result<(), Self::Error> + where F: FnOnce(&mut Self) -> Result<(), Self::Error> + { + f(self) + } + + fn emit_tuple_struct(&mut self, _name: &str, len: usize, f: F) -> Result<(), Self::Error> where F: FnOnce(&mut Self) -> Result<(), Self::Error> { self.emit_tuple(len, f) } - fn emit_tuple_struct_arg(&mut self, f_idx: usize, f: F) - -> Result<(), Self::Error> + + fn emit_tuple_struct_arg(&mut self, f_idx: usize, f: F) -> Result<(), Self::Error> where F: FnOnce(&mut Self) -> Result<(), Self::Error> { self.emit_tuple_arg(f_idx, f) @@ -109,13 +118,14 @@ pub trait Encoder { { self.emit_enum("Option", f) } + fn emit_option_none(&mut self) -> Result<(), Self::Error> { self.emit_enum_variant("None", 0, 0, |_| Ok(())) } + fn emit_option_some(&mut self, f: F) -> Result<(), Self::Error> where F: FnOnce(&mut Self) -> Result<(), Self::Error> { - self.emit_enum_variant("Some", 1, 1, f) } @@ -125,8 +135,12 @@ pub trait Encoder { self.emit_usize(len)?; f(self) } + fn emit_seq_elt(&mut self, _idx: usize, f: F) -> Result<(), Self::Error> - where F: FnOnce(&mut Self) -> Result<(), Self::Error> { f(self) } + where F: FnOnce(&mut Self) -> Result<(), Self::Error> + { + f(self) + } fn emit_map(&mut self, len: usize, f: F) -> Result<(), Self::Error> where F: FnOnce(&mut Self) -> Result<(), Self::Error> @@ -134,10 +148,18 @@ pub trait Encoder { self.emit_usize(len)?; f(self) } + fn emit_map_elt_key(&mut self, _idx: usize, f: F) -> Result<(), Self::Error> - where F: FnOnce(&mut Self) -> Result<(), Self::Error> { f(self) } + where F: FnOnce(&mut Self) -> Result<(), Self::Error> + { + f(self) + } + fn emit_map_elt_val(&mut self, _idx: usize, f: F) -> Result<(), Self::Error> - where F: FnOnce(&mut Self) -> Result<(), Self::Error> { f(self) } + where F: FnOnce(&mut Self) -> Result<(), Self::Error> + { + f(self) + } } pub trait Decoder { @@ -165,59 +187,67 @@ pub trait Decoder { // Compound types: fn read_enum(&mut self, _name: &str, f: F) -> Result - where F: FnOnce(&mut Self) -> Result { f(self) } + where F: FnOnce(&mut Self) -> Result + { + f(self) + } - fn read_enum_variant(&mut self, _names: &[&str], mut f: F) - -> Result + fn read_enum_variant(&mut self, _names: &[&str], mut f: F) -> Result where F: FnMut(&mut Self, usize) -> Result { let disr = self.read_usize()?; f(self, disr) } - fn read_enum_variant_arg(&mut self, _a_idx: usize, f: F) - -> Result - where F: FnOnce(&mut Self) -> Result { f(self) } - fn read_enum_struct_variant(&mut self, names: &[&str], f: F) - -> Result + fn read_enum_variant_arg(&mut self, _a_idx: usize, f: F) -> Result + where F: FnOnce(&mut Self) -> Result + { + f(self) + } + + fn read_enum_struct_variant(&mut self, names: &[&str], f: F) -> Result where F: FnMut(&mut Self, usize) -> Result { self.read_enum_variant(names, f) } - fn read_enum_struct_variant_field(&mut self, - _f_name: &str, - f_idx: usize, - f: F) - -> Result - where F: FnOnce(&mut Self) -> Result + + fn read_enum_struct_variant_field(&mut self, _f_name: &str, f_idx: usize, f: F) + -> Result where F: FnOnce(&mut Self) -> Result { self.read_enum_variant_arg(f_idx, f) } - fn read_struct(&mut self, _s_name: &str, _len: usize, f: F) - -> Result - where F: FnOnce(&mut Self) -> Result { f(self) } - fn read_struct_field(&mut self, - _f_name: &str, - _f_idx: usize, - f: F) - -> Result - where F: FnOnce(&mut Self) -> Result { f(self) } + fn read_struct(&mut self, _s_name: &str, _len: usize, f: F) -> Result + where F: FnOnce(&mut Self) -> Result + { + f(self) + } + + fn read_struct_field(&mut self, _f_name: &str, _f_idx: usize, f: F) + -> Result where F: FnOnce(&mut Self) -> Result + { + f(self) + } fn read_tuple(&mut self, _len: usize, f: F) -> Result - where F: FnOnce(&mut Self) -> Result { f(self) } - fn read_tuple_arg(&mut self, _a_idx: usize, f: F) - -> Result - where F: FnOnce(&mut Self) -> Result { f(self) } + where F: FnOnce(&mut Self) -> Result + { + f(self) + } - fn read_tuple_struct(&mut self, _s_name: &str, len: usize, f: F) - -> Result + fn read_tuple_arg(&mut self, _a_idx: usize, f: F) -> Result + where F: FnOnce(&mut Self) -> Result + { + f(self) + } + + fn read_tuple_struct(&mut self, _s_name: &str, len: usize, f: F) -> Result where F: FnOnce(&mut Self) -> Result { self.read_tuple(len, f) } - fn read_tuple_struct_arg(&mut self, a_idx: usize, f: F) - -> Result + + fn read_tuple_struct_arg(&mut self, a_idx: usize, f: F) -> Result where F: FnOnce(&mut Self) -> Result { self.read_tuple_arg(a_idx, f) @@ -244,8 +274,12 @@ pub trait Decoder { let len = self.read_usize()?; f(self, len) } + fn read_seq_elt(&mut self, _idx: usize, f: F) -> Result - where F: FnOnce(&mut Self) -> Result { f(self) } + where F: FnOnce(&mut Self) -> Result + { + f(self) + } fn read_map(&mut self, f: F) -> Result where F: FnOnce(&mut Self, usize) -> Result @@ -253,12 +287,18 @@ pub trait Decoder { let len = self.read_usize()?; f(self, len) } - fn read_map_elt_key(&mut self, _idx: usize, f: F) - -> Result - where F: FnOnce(&mut Self) -> Result { f(self) } - fn read_map_elt_val(&mut self, _idx: usize, f: F) - -> Result - where F: FnOnce(&mut Self) -> Result { f(self) } + + fn read_map_elt_key(&mut self, _idx: usize, f: F) -> Result + where F: FnOnce(&mut Self) -> Result + { + f(self) + } + + fn read_map_elt_val(&mut self, _idx: usize, f: F) -> Result + where F: FnOnce(&mut Self) -> Result + { + f(self) + } // Failure fn error(&mut self, err: &str) -> Self::Error; @@ -567,9 +607,7 @@ impl Decodable for Vec { } } -impl<'a, T:Encodable> Encodable for Cow<'a, [T]> -where [T]: ToOwned> -{ +impl<'a, T:Encodable> Encodable for Cow<'a, [T]> where [T]: ToOwned> { fn encode(&self, s: &mut S) -> Result<(), S::Error> { s.emit_seq(self.len(), |s| { for (i, e) in self.iter().enumerate() { @@ -580,9 +618,7 @@ where [T]: ToOwned> } } -impl Decodable for Cow<'static, [T]> -where [T]: ToOwned> -{ +impl Decodable for Cow<'static, [T]> where [T]: ToOwned> { fn decode(d: &mut D) -> Result, D::Error> { d.read_seq(|d, len| { let mut v = Vec::with_capacity(len); @@ -685,8 +721,7 @@ macro_rules! tuple { let len: usize = count_idents!($($name,)*); d.read_tuple(len, |d| { let mut i = 0; - let ret = ($(d.read_tuple_arg({ i+=1; i-1 }, - |d| -> Result<$name,D::Error> { + let ret = ($(d.read_tuple_arg({ i+=1; i-1 }, |d| -> Result<$name, D::Error> { Decodable::decode(d) })?,)*); Ok(ret) @@ -778,13 +813,11 @@ pub trait SpecializationError { /// `T` is the type being encoded/decoded, and /// the arguments are the names of the trait /// and method that should've been overridden. - fn not_found(trait_name: &'static str, - method_name: &'static str) -> Self; + fn not_found(trait_name: &'static str, method_name: &'static str) -> Self; } impl SpecializationError for E { - default fn not_found(trait_name: &'static str, - method_name: &'static str) -> E { + default fn not_found(trait_name: &'static str, method_name: &'static str) -> E { panic!("missing specialization: `<{} as {}<{}>>::{}` not overridden", unsafe { intrinsics::type_name::() }, trait_name,