1
1
use std:: ptr;
2
2
use std:: io:: Write ;
3
- use JsonValue ;
4
- use number:: Number ;
5
- use object:: Object ;
6
3
use std:: io;
7
4
8
- use util:: print_dec;
5
+ use crate :: JsonValue ;
6
+ use crate :: number:: Number ;
7
+ use crate :: object:: Object ;
8
+ use crate :: util:: print_dec;
9
9
10
10
const QU : u8 = b'"' ;
11
11
const BS : u8 = b'\\' ;
@@ -66,35 +66,35 @@ pub trait Generator {
66
66
67
67
#[ inline( never) ]
68
68
fn write_string_complex ( & mut self , string : & str , mut start : usize ) -> io:: Result < ( ) > {
69
- try! ( self . write ( string[ .. start] . as_bytes ( ) ) ) ;
69
+ self . write ( string[ .. start] . as_bytes ( ) ) ? ;
70
70
71
71
for ( index, ch) in string. bytes ( ) . enumerate ( ) . skip ( start) {
72
72
let escape = ESCAPED [ ch as usize ] ;
73
73
if escape > 0 {
74
- try! ( self . write ( string[ start .. index] . as_bytes ( ) ) ) ;
75
- try! ( self . write ( & [ b'\\' , escape] ) ) ;
74
+ self . write ( string[ start .. index] . as_bytes ( ) ) ? ;
75
+ self . write ( & [ b'\\' , escape] ) ? ;
76
76
start = index + 1 ;
77
77
}
78
78
if escape == b'u' {
79
- try! ( write ! ( self . get_writer( ) , "{:04x}" , ch) ) ;
79
+ write ! ( self . get_writer( ) , "{:04x}" , ch) ? ;
80
80
}
81
81
}
82
- try! ( self . write ( string[ start ..] . as_bytes ( ) ) ) ;
82
+ self . write ( string[ start ..] . as_bytes ( ) ) ? ;
83
83
84
84
self . write_char ( b'"' )
85
85
}
86
86
87
87
#[ inline( always) ]
88
88
fn write_string ( & mut self , string : & str ) -> io:: Result < ( ) > {
89
- try! ( self . write_char ( b'"' ) ) ;
89
+ self . write_char ( b'"' ) ? ;
90
90
91
91
for ( index, ch) in string. bytes ( ) . enumerate ( ) {
92
92
if ESCAPED [ ch as usize ] > 0 {
93
93
return self . write_string_complex ( string, index)
94
94
}
95
95
}
96
96
97
- try! ( self . write ( string. as_bytes ( ) ) ) ;
97
+ self . write ( string. as_bytes ( ) ) ? ;
98
98
self . write_char ( b'"' )
99
99
}
100
100
@@ -116,30 +116,30 @@ pub trait Generator {
116
116
117
117
#[ inline( always) ]
118
118
fn write_object ( & mut self , object : & Object ) -> io:: Result < ( ) > {
119
- try! ( self . write_char ( b'{' ) ) ;
119
+ self . write_char ( b'{' ) ? ;
120
120
let mut iter = object. iter ( ) ;
121
121
122
122
if let Some ( ( key, value) ) = iter. next ( ) {
123
123
self . indent ( ) ;
124
- try! ( self . new_line ( ) ) ;
125
- try! ( self . write_string ( key) ) ;
126
- try! ( self . write_min ( b": " , b':' ) ) ;
127
- try! ( self . write_json ( value) ) ;
124
+ self . new_line ( ) ? ;
125
+ self . write_string ( key) ? ;
126
+ self . write_min ( b": " , b':' ) ? ;
127
+ self . write_json ( value) ? ;
128
128
} else {
129
- try! ( self . write_char ( b'}' ) ) ;
129
+ self . write_char ( b'}' ) ? ;
130
130
return Ok ( ( ) ) ;
131
131
}
132
132
133
133
for ( key, value) in iter {
134
- try! ( self . write_char ( b',' ) ) ;
135
- try! ( self . new_line ( ) ) ;
136
- try! ( self . write_string ( key) ) ;
137
- try! ( self . write_min ( b": " , b':' ) ) ;
138
- try! ( self . write_json ( value) ) ;
134
+ self . write_char ( b',' ) ? ;
135
+ self . new_line ( ) ? ;
136
+ self . write_string ( key) ? ;
137
+ self . write_min ( b": " , b':' ) ? ;
138
+ self . write_json ( value) ? ;
139
139
}
140
140
141
141
self . dedent ( ) ;
142
- try! ( self . new_line ( ) ) ;
142
+ self . new_line ( ) ? ;
143
143
self . write_char ( b'}' )
144
144
}
145
145
@@ -152,26 +152,26 @@ pub trait Generator {
152
152
JsonValue :: Boolean ( true ) => self . write ( b"true" ) ,
153
153
JsonValue :: Boolean ( false ) => self . write ( b"false" ) ,
154
154
JsonValue :: Array ( ref array) => {
155
- try! ( self . write_char ( b'[' ) ) ;
155
+ self . write_char ( b'[' ) ? ;
156
156
let mut iter = array. iter ( ) ;
157
157
158
158
if let Some ( item) = iter. next ( ) {
159
159
self . indent ( ) ;
160
- try! ( self . new_line ( ) ) ;
161
- try! ( self . write_json ( item) ) ;
160
+ self . new_line ( ) ? ;
161
+ self . write_json ( item) ? ;
162
162
} else {
163
- try! ( self . write_char ( b']' ) ) ;
163
+ self . write_char ( b']' ) ? ;
164
164
return Ok ( ( ) ) ;
165
165
}
166
166
167
167
for item in iter {
168
- try! ( self . write_char ( b',' ) ) ;
169
- try! ( self . new_line ( ) ) ;
170
- try! ( self . write_json ( item) ) ;
168
+ self . write_char ( b',' ) ? ;
169
+ self . new_line ( ) ? ;
170
+ self . write_json ( item) ? ;
171
171
}
172
172
173
173
self . dedent ( ) ;
174
- try! ( self . new_line ( ) ) ;
174
+ self . new_line ( ) ? ;
175
175
self . write_char ( b']' )
176
176
} ,
177
177
JsonValue :: Object ( ref object) => {
@@ -345,9 +345,9 @@ impl<'a, W> Generator for PrettyWriterGenerator<'a, W> where W: Write {
345
345
}
346
346
347
347
fn new_line ( & mut self ) -> io:: Result < ( ) > {
348
- try! ( self . write_char ( b'\n' ) ) ;
348
+ self . write_char ( b'\n' ) ? ;
349
349
for _ in 0 ..( self . dent * self . spaces_per_indent ) {
350
- try! ( self . write_char ( b' ' ) ) ;
350
+ self . write_char ( b' ' ) ? ;
351
351
}
352
352
Ok ( ( ) )
353
353
}
0 commit comments