@@ -84,19 +84,19 @@ fn spaces(n: uint) -> ~str {
84
84
}
85
85
86
86
/// A structure for implementing serialization to JSON.
87
- pub struct Encoder {
88
- priv wr: @ mut io:: Writer ,
87
+ pub struct Encoder < ' self > {
88
+ priv wr: & ' self mut io:: Writer ,
89
89
}
90
90
91
- impl Encoder {
91
+ impl < ' self > Encoder < ' self > {
92
92
/// Creates a new JSON encoder whose output will be written to the writer
93
93
/// specified.
94
- pub fn init ( wr : @ mut io:: Writer ) -> Encoder {
94
+ pub fn init < ' a > ( wr : & ' a mut io:: Writer ) -> Encoder < ' a > {
95
95
Encoder { wr : wr }
96
96
}
97
97
}
98
98
99
- impl serialize:: Encoder for Encoder {
99
+ impl < ' self > serialize:: Encoder for Encoder < ' self > {
100
100
fn emit_nil ( & mut self ) { write ! ( self . wr, "null" ) }
101
101
102
102
fn emit_uint ( & mut self , v : uint ) { self . emit_f64 ( v as f64 ) ; }
@@ -129,13 +129,13 @@ impl serialize::Encoder for Encoder {
129
129
write ! ( self . wr, "{}" , escape_str( v) )
130
130
}
131
131
132
- fn emit_enum ( & mut self , _name : & str , f: |& mut Encoder |) { f ( self ) }
132
+ fn emit_enum ( & mut self , _name : & str , f: |& mut Encoder < ' self > |) { f( self ) }
133
133
134
134
fn emit_enum_variant( & mut self ,
135
135
name: & str,
136
136
_id: uint,
137
137
cnt: uint,
138
- f: |& mut Encoder |) {
138
+ f: |& mut Encoder < ' self > |) {
139
139
// enums are encoded as strings or objects
140
140
// Bunny => "Bunny"
141
141
// Kangaroo(34,"William") => {"variant": "Kangaroo", "fields": [34,"William"]}
@@ -150,7 +150,7 @@ impl serialize::Encoder for Encoder {
150
150
}
151
151
}
152
152
153
- fn emit_enum_variant_arg ( & mut self , idx : uint , f: |& mut Encoder |) {
153
+ fn emit_enum_variant_arg( & mut self , idx: uint, f: |& mut Encoder < ' self > |) {
154
154
if idx != 0 {
155
155
write ! ( self . wr, "," ) ;
156
156
}
@@ -161,18 +161,18 @@ impl serialize::Encoder for Encoder {
161
161
name: & str,
162
162
id: uint,
163
163
cnt: uint,
164
- f: |& mut Encoder |) {
164
+ f: |& mut Encoder < ' self > |) {
165
165
self . emit_enum_variant( name, id, cnt, f)
166
166
}
167
167
168
168
fn emit_enum_struct_variant_field( & mut self ,
169
169
_: & str,
170
170
idx: uint,
171
- f: |& mut Encoder |) {
171
+ f: |& mut Encoder < ' self > |) {
172
172
self . emit_enum_variant_arg( idx, f)
173
173
}
174
174
175
- fn emit_struct ( & mut self , _: & str , _: uint , f: |& mut Encoder |) {
175
+ fn emit_struct( & mut self , _: & str, _: uint, f: |& mut Encoder < ' self > |) {
176
176
write ! ( self . wr, r"\{" ) ;
177
177
f( self ) ;
178
178
write ! ( self . wr, r"\}" ) ;
@@ -181,81 +181,81 @@ impl serialize::Encoder for Encoder {
181
181
fn emit_struct_field( & mut self ,
182
182
name: & str,
183
183
idx: uint,
184
- f: |& mut Encoder |) {
184
+ f: |& mut Encoder < ' self > |) {
185
185
if idx != 0 { write ! ( self . wr, "," ) }
186
186
write ! ( self . wr, "{}:" , escape_str( name) ) ;
187
187
f( self ) ;
188
188
}
189
189
190
- fn emit_tuple ( & mut self , len : uint , f: |& mut Encoder |) {
190
+ fn emit_tuple( & mut self , len: uint, f: |& mut Encoder < ' self > |) {
191
191
self . emit_seq( len, f)
192
192
}
193
- fn emit_tuple_arg ( & mut self , idx : uint , f: |& mut Encoder |) {
193
+ fn emit_tuple_arg( & mut self , idx: uint, f: |& mut Encoder < ' self > |) {
194
194
self . emit_seq_elt( idx, f)
195
195
}
196
196
197
197
fn emit_tuple_struct( & mut self ,
198
198
_name: & str,
199
199
len: uint,
200
- f: |& mut Encoder |) {
200
+ f: |& mut Encoder < ' self > |) {
201
201
self . emit_seq( len, f)
202
202
}
203
- fn emit_tuple_struct_arg ( & mut self , idx : uint , f: |& mut Encoder |) {
203
+ fn emit_tuple_struct_arg( & mut self , idx: uint, f: |& mut Encoder < ' self > |) {
204
204
self . emit_seq_elt( idx, f)
205
205
}
206
206
207
- fn emit_option ( & mut self , f: |& mut Encoder |) { f ( self ) ; }
207
+ fn emit_option( & mut self , f: |& mut Encoder < ' self > |) { f( self ) ; }
208
208
fn emit_option_none( & mut self ) { self . emit_nil( ) ; }
209
- fn emit_option_some ( & mut self , f: |& mut Encoder |) { f ( self ) ; }
209
+ fn emit_option_some( & mut self , f: |& mut Encoder < ' self > |) { f( self ) ; }
210
210
211
- fn emit_seq ( & mut self , _len : uint , f: |& mut Encoder |) {
211
+ fn emit_seq( & mut self , _len: uint, f: |& mut Encoder < ' self > |) {
212
212
write ! ( self . wr, "[" ) ;
213
213
f( self ) ;
214
214
write ! ( self . wr, "]" ) ;
215
215
}
216
216
217
- fn emit_seq_elt ( & mut self , idx : uint , f: |& mut Encoder |) {
217
+ fn emit_seq_elt( & mut self , idx: uint, f: |& mut Encoder < ' self > |) {
218
218
if idx != 0 {
219
219
write ! ( self . wr, "," ) ;
220
220
}
221
221
f( self )
222
222
}
223
223
224
- fn emit_map ( & mut self , _len : uint , f: |& mut Encoder |) {
224
+ fn emit_map( & mut self , _len: uint, f: |& mut Encoder < ' self > |) {
225
225
write ! ( self . wr, r"\{" ) ;
226
226
f( self ) ;
227
227
write ! ( self . wr, r"\}" ) ;
228
228
}
229
229
230
- fn emit_map_elt_key ( & mut self , idx : uint , f: |& mut Encoder |) {
230
+ fn emit_map_elt_key( & mut self , idx: uint, f: |& mut Encoder < ' self > |) {
231
231
if idx != 0 { write ! ( self . wr, "," ) }
232
232
f( self )
233
233
}
234
234
235
- fn emit_map_elt_val ( & mut self , _idx : uint , f: |& mut Encoder |) {
235
+ fn emit_map_elt_val( & mut self , _idx: uint, f: |& mut Encoder < ' self > |) {
236
236
write ! ( self . wr, ":" ) ;
237
237
f( self )
238
238
}
239
239
}
240
240
241
241
/// Another encoder for JSON, but prints out human-readable JSON instead of
242
242
/// compact data
243
- pub struct PrettyEncoder {
244
- priv wr: @ mut io:: Writer ,
243
+ pub struct PrettyEncoder < ' self > {
244
+ priv wr: & ' self mut io:: Writer ,
245
245
priv indent: uint,
246
246
}
247
247
248
- impl PrettyEncoder {
248
+ impl < ' self > PrettyEncoder < ' self > {
249
249
/// Creates a new encoder whose output will be written to the specified writer
250
- pub fn init ( wr : @ mut io:: Writer ) -> PrettyEncoder {
250
+ pub fn init < ' a > ( wr: & ' a mut io:: Writer ) -> PrettyEncoder < ' a > {
251
251
PrettyEncoder {
252
252
wr : wr,
253
253
indent : 0 ,
254
254
}
255
255
}
256
256
}
257
257
258
- impl serialize:: Encoder for PrettyEncoder {
258
+ impl < ' self > serialize:: Encoder for PrettyEncoder < ' self > {
259
259
fn emit_nil( & mut self ) { write ! ( self . wr, "null" ) }
260
260
261
261
fn emit_uint( & mut self , v: uint) { self . emit_f64( v as f64) ; }
@@ -286,15 +286,15 @@ impl serialize::Encoder for PrettyEncoder {
286
286
fn emit_char( & mut self , v: char) { self . emit_str( str :: from_char( v) ) }
287
287
fn emit_str( & mut self , v: & str) { write!( self . wr, "{}" , escape_str( v) ) ; }
288
288
289
- fn emit_enum ( & mut self , _name : & str , f: |& mut PrettyEncoder |) {
289
+ fn emit_enum( & mut self , _name: & str, f: |& mut PrettyEncoder < ' self > |) {
290
290
f( self )
291
291
}
292
292
293
293
fn emit_enum_variant( & mut self ,
294
294
name: & str ,
295
295
_: uint ,
296
296
cnt : uint ,
297
- f: |& mut PrettyEncoder |) {
297
+ f: |& mut PrettyEncoder < ' self > |) {
298
298
if cnt == 0 {
299
299
write ! ( self . wr, "{}" , escape_str( name) ) ;
300
300
} else {
@@ -308,7 +308,7 @@ impl serialize::Encoder for PrettyEncoder {
308
308
309
309
fn emit_enum_variant_arg ( & mut self ,
310
310
idx : uint ,
311
- f: |& mut PrettyEncoder |) {
311
+ f: |& mut PrettyEncoder < ' self > |) {
312
312
if idx != 0 {
313
313
write ! ( self . wr, ",\n " ) ;
314
314
}
@@ -320,22 +320,22 @@ impl serialize::Encoder for PrettyEncoder {
320
320
name : & str ,
321
321
id : uint ,
322
322
cnt : uint ,
323
- f: |& mut PrettyEncoder |) {
323
+ f: |& mut PrettyEncoder < ' self > |) {
324
324
self . emit_enum_variant ( name, id, cnt, f)
325
325
}
326
326
327
327
fn emit_enum_struct_variant_field ( & mut self ,
328
328
_: & str ,
329
329
idx : uint ,
330
- f: |& mut PrettyEncoder |) {
330
+ f: |& mut PrettyEncoder < ' self > |) {
331
331
self . emit_enum_variant_arg ( idx, f)
332
332
}
333
333
334
334
335
335
fn emit_struct ( & mut self ,
336
336
_: & str ,
337
337
len : uint ,
338
- f: |& mut PrettyEncoder |) {
338
+ f: |& mut PrettyEncoder < ' self > |) {
339
339
if len == 0 {
340
340
write ! ( self . wr, "\\ {\\ }" ) ;
341
341
} else {
@@ -350,7 +350,7 @@ impl serialize::Encoder for PrettyEncoder {
350
350
fn emit_struct_field ( & mut self ,
351
351
name : & str ,
352
352
idx : uint ,
353
- f: |& mut PrettyEncoder |) {
353
+ f: |& mut PrettyEncoder < ' self > |) {
354
354
if idx == 0 {
355
355
write ! ( self . wr, "\n " ) ;
356
356
} else {
@@ -360,30 +360,30 @@ impl serialize::Encoder for PrettyEncoder {
360
360
f ( self ) ;
361
361
}
362
362
363
- fn emit_tuple ( & mut self , len : uint , f: |& mut PrettyEncoder |) {
363
+ fn emit_tuple ( & mut self , len : uint , f: |& mut PrettyEncoder < ' self > |) {
364
364
self . emit_seq ( len, f)
365
365
}
366
- fn emit_tuple_arg ( & mut self , idx : uint , f: |& mut PrettyEncoder |) {
366
+ fn emit_tuple_arg ( & mut self , idx : uint , f: |& mut PrettyEncoder < ' self > |) {
367
367
self . emit_seq_elt ( idx, f)
368
368
}
369
369
370
370
fn emit_tuple_struct ( & mut self ,
371
371
_: & str ,
372
372
len : uint ,
373
- f: |& mut PrettyEncoder |) {
373
+ f: |& mut PrettyEncoder < ' self > |) {
374
374
self . emit_seq ( len, f)
375
375
}
376
376
fn emit_tuple_struct_arg ( & mut self ,
377
377
idx : uint ,
378
- f: |& mut PrettyEncoder |) {
378
+ f: |& mut PrettyEncoder < ' self > |) {
379
379
self . emit_seq_elt ( idx, f)
380
380
}
381
381
382
- fn emit_option ( & mut self , f: |& mut PrettyEncoder |) { f ( self ) ; }
382
+ fn emit_option ( & mut self , f: |& mut PrettyEncoder < ' self > |) { f( self ) ; }
383
383
fn emit_option_none( & mut self ) { self . emit_nil( ) ; }
384
- fn emit_option_some ( & mut self , f: |& mut PrettyEncoder |) { f ( self ) ; }
384
+ fn emit_option_some( & mut self , f: |& mut PrettyEncoder < ' self > |) { f( self ) ; }
385
385
386
- fn emit_seq ( & mut self , len : uint , f: |& mut PrettyEncoder |) {
386
+ fn emit_seq( & mut self , len: uint, f: |& mut PrettyEncoder < ' self > |) {
387
387
if len == 0 {
388
388
write ! ( self . wr, "[]" ) ;
389
389
} else {
@@ -395,7 +395,7 @@ impl serialize::Encoder for PrettyEncoder {
395
395
}
396
396
}
397
397
398
- fn emit_seq_elt ( & mut self , idx : uint , f: |& mut PrettyEncoder |) {
398
+ fn emit_seq_elt( & mut self , idx: uint, f: |& mut PrettyEncoder < ' self > |) {
399
399
if idx == 0 {
400
400
write ! ( self . wr, "\n " ) ;
401
401
} else {
@@ -405,7 +405,7 @@ impl serialize::Encoder for PrettyEncoder {
405
405
f( self )
406
406
}
407
407
408
- fn emit_map ( & mut self , len : uint , f: |& mut PrettyEncoder |) {
408
+ fn emit_map( & mut self , len: uint, f: |& mut PrettyEncoder < ' self > |) {
409
409
if len == 0 {
410
410
write ! ( self . wr, "\\ {\\ }" ) ;
411
411
} else {
@@ -417,7 +417,7 @@ impl serialize::Encoder for PrettyEncoder {
417
417
}
418
418
}
419
419
420
- fn emit_map_elt_key ( & mut self , idx : uint , f: |& mut PrettyEncoder |) {
420
+ fn emit_map_elt_key( & mut self , idx: uint, f: |& mut PrettyEncoder < ' self > |) {
421
421
if idx == 0 {
422
422
write ! ( self . wr, "\n " ) ;
423
423
} else {
@@ -427,7 +427,7 @@ impl serialize::Encoder for PrettyEncoder {
427
427
f( self ) ;
428
428
}
429
429
430
- fn emit_map_elt_val ( & mut self , _idx : uint , f: |& mut PrettyEncoder |) {
430
+ fn emit_map_elt_val( & mut self , _idx: uint, f: |& mut PrettyEncoder < ' self > |) {
431
431
write ! ( self . wr, ": " ) ;
432
432
f ( self ) ;
433
433
}
@@ -448,22 +448,22 @@ impl<E: serialize::Encoder> serialize::Encodable<E> for Json {
448
448
449
449
impl Json {
450
450
/// Encodes a json value into a io::writer. Uses a single line.
451
- pub fn to_writer ( & self , wr : @ mut io:: Writer ) {
451
+ pub fn to_writer( & self , wr: & mut io:: Writer ) {
452
452
let mut encoder = Encoder :: init( wr) ;
453
453
self . encode( & mut encoder)
454
454
}
455
455
456
456
/// Encodes a json value into a io::writer.
457
457
/// Pretty-prints in a more readable format.
458
- pub fn to_pretty_writer ( & self , wr : @ mut io:: Writer ) {
458
+ pub fn to_pretty_writer( & self , wr: & mut io:: Writer ) {
459
459
let mut encoder = PrettyEncoder :: init( wr) ;
460
460
self . encode( & mut encoder)
461
461
}
462
462
463
463
/// Encodes a json value into a string
464
464
pub fn to_pretty_str( & self ) -> ~str {
465
- let s = @ mut MemWriter :: new ( ) ;
466
- self . to_pretty_writer ( s as @ mut io:: Writer ) ;
465
+ let mut s = MemWriter :: new( ) ;
466
+ self . to_pretty_writer( & mut s as & mut io:: Writer ) ;
467
467
str :: from_utf8( s. inner_ref( ) . as_slice( ) )
468
468
}
469
469
}
0 commit comments