@@ -141,11 +141,6 @@ impl serialize::Encoder for Encoder {
141141 f ( )
142142 }
143143
144- fn emit_rec ( & self , f : & fn ( ) ) {
145- self . wr . write_char ( '{' ) ;
146- f ( ) ;
147- self . wr . write_char ( '}' ) ;
148- }
149144 fn emit_struct ( & self , _name : & str , _len : uint , f : & fn ( ) ) {
150145 self . wr . write_char ( '{' ) ;
151146 f ( ) ;
@@ -253,20 +248,17 @@ impl serialize::Encoder for PrettyEncoder {
253248 f ( )
254249 }
255250
256- fn emit_rec ( & self , f : & fn ( ) ) {
257- self . wr . write_char ( '{' ) ;
258- self . indent += 2 ;
259- f ( ) ;
260- self . wr . write_char ( '\n' ) ;
261- self . indent -= 2 ;
262- self . wr . write_str ( spaces ( self . indent ) ) ;
263- self . wr . write_char ( '}' ) ;
264- }
265251 fn emit_struct ( & self , _name : & str , len : uint , f : & fn ( ) ) {
266252 if len == 0 {
267253 self . wr . write_str ( "{}" ) ;
268254 } else {
269- self . emit_rec ( f)
255+ self . wr . write_char ( '{' ) ;
256+ self . indent += 2 ;
257+ f ( ) ;
258+ self . wr . write_char ( '\n' ) ;
259+ self . indent -= 2 ;
260+ self . wr . write_str ( spaces ( self . indent ) ) ;
261+ self . wr . write_char ( '}' ) ;
270262 }
271263 }
272264 fn emit_field ( & self , name : & str , idx : uint , f : & fn ( ) ) {
@@ -286,25 +278,25 @@ impl serialize::Encoder for PrettyEncoder {
286278 fn emit_option_some ( & self , f : & fn ( ) ) { f ( ) ; }
287279}
288280
289- impl < S : serialize:: Encoder > serialize:: Encodable < S > for Json {
290- fn encode ( & self , s : & S ) {
281+ impl < E : serialize:: Encoder > serialize:: Encodable < E > for Json {
282+ fn encode ( & self , e : & E ) {
291283 match * self {
292- Number ( v) => v. encode ( s ) ,
293- String ( ref v) => v. encode ( s ) ,
294- Boolean ( v) => v. encode ( s ) ,
295- List ( ref v) => v. encode ( s ) ,
284+ Number ( v) => v. encode ( e ) ,
285+ String ( ref v) => v. encode ( e ) ,
286+ Boolean ( v) => v. encode ( e ) ,
287+ List ( ref v) => v. encode ( e ) ,
296288 Object ( ref v) => {
297- do s . emit_rec || {
289+ do e . emit_struct ( "Object" , v . len ( ) ) || {
298290 let mut idx = 0 ;
299291 for v. each |& ( key, value) | {
300- do s . emit_field( * key, idx) {
301- value. encode ( s ) ;
292+ do e . emit_field( * key, idx) {
293+ value. encode ( e ) ;
302294 }
303295 idx += 1 ;
304296 }
305297 }
306298 } ,
307- Null => s . emit_nil ( ) ,
299+ Null => e . emit_nil ( ) ,
308300 }
309301 }
310302}
@@ -855,13 +847,6 @@ impl<'self> serialize::Decoder for Decoder<'self> {
855847 }
856848 }
857849
858- fn read_rec<T>(&self, f: &fn() -> T) -> T {
859- debug!(" read_rec( ) ");
860- let value = f();
861- self.pop();
862- value
863- }
864-
865850 fn read_struct<T>(&self, _name: &str, _len: uint, f: &fn() -> T) -> T {
866851 debug!(" read_struct( ) ");
867852 let value = f();
@@ -870,7 +855,7 @@ impl<'self> serialize::Decoder for Decoder<'self> {
870855 }
871856
872857 fn read_field<T>(&self, name: &str, idx: uint, f: &fn() -> T) -> T {
873- debug!(" read_rec_field ( %s, idx=%u) ", name, idx);
858+ debug!(" read_field ( %s, idx=%u) ", name, idx);
874859 let top = self.peek();
875860 match *top {
876861 Object(ref obj) => {
0 commit comments