@@ -32,7 +32,6 @@ pub enum MaxMindDBError {
32
32
}
33
33
34
34
impl From < io:: Error > for MaxMindDBError {
35
-
36
35
fn from ( err : io:: Error ) -> MaxMindDBError {
37
36
// clean up and clean up MaxMindDBError generally
38
37
MaxMindDBError :: IoError ( err. description ( ) . to_owned ( ) )
@@ -78,8 +77,7 @@ impl BinaryDecoder {
78
77
fn decode_bool ( & self , size : usize , offset : usize ) -> BinaryDecodeResult < decoder:: DataRecord > {
79
78
match size {
80
79
0 | 1 => ( Ok ( decoder:: DataRecord :: Boolean ( size != 0 ) ) , offset) ,
81
- s => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "float of size {:?}" , s) ) ) ,
82
- 0 ) ,
80
+ s => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "float of size {:?}" , s) ) ) , 0 ) ,
83
81
}
84
82
}
85
83
@@ -98,13 +96,12 @@ impl BinaryDecoder {
98
96
let new_offset = offset + size;
99
97
100
98
let value = self . buf [ offset..new_offset]
101
- . iter ( )
102
- . fold ( 0u32 , |acc, & b| ( acc << 8 ) | b as u32 ) ;
99
+ . iter ( )
100
+ . fold ( 0u32 , |acc, & b| ( acc << 8 ) | b as u32 ) ;
103
101
let float_value: f32 = unsafe { mem:: transmute ( value) } ;
104
102
( Ok ( decoder:: DataRecord :: Float ( float_value) ) , new_offset)
105
103
}
106
- s => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "float of size {:?}" , s) ) ) ,
107
- 0 ) ,
104
+ s => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "float of size {:?}" , s) ) ) , 0 ) ,
108
105
}
109
106
}
110
107
@@ -114,13 +111,12 @@ impl BinaryDecoder {
114
111
let new_offset = offset + size;
115
112
116
113
let value = self . buf [ offset..new_offset]
117
- . iter ( )
118
- . fold ( 0u64 , |acc, & b| ( acc << 8 ) | b as u64 ) ;
114
+ . iter ( )
115
+ . fold ( 0u64 , |acc, & b| ( acc << 8 ) | b as u64 ) ;
119
116
let float_value: f64 = unsafe { mem:: transmute ( value) } ;
120
117
( Ok ( decoder:: DataRecord :: Double ( float_value) ) , new_offset)
121
118
}
122
- s => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "double of size {:?}" , s) ) ) ,
123
- 0 ) ,
119
+ s => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "double of size {:?}" , s) ) ) , 0 ) ,
124
120
}
125
121
}
126
122
@@ -130,40 +126,39 @@ impl BinaryDecoder {
130
126
let new_offset = offset + size;
131
127
132
128
let value = self . buf [ offset..new_offset]
133
- . iter ( )
134
- . fold ( 0u64 , |acc, & b| ( acc << 8 ) | b as u64 ) ;
129
+ . iter ( )
130
+ . fold ( 0u64 , |acc, & b| ( acc << 8 ) | b as u64 ) ;
135
131
( Ok ( decoder:: DataRecord :: Uint64 ( value) ) , new_offset)
136
132
}
137
- s => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "u64 of size {:?}" , s) ) ) ,
138
- 0 ) ,
133
+ s => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "u64 of size {:?}" , s) ) ) , 0 ) ,
139
134
}
140
135
}
141
136
142
137
fn decode_uint32 ( & self , size : usize , offset : usize ) -> BinaryDecodeResult < decoder:: DataRecord > {
143
138
match size {
144
139
s if s <= 4 => {
145
140
match self . decode_uint64 ( size, offset) {
146
- ( Ok ( decoder:: DataRecord :: Uint64 ( u) ) , o) =>
147
- ( Ok ( decoder:: DataRecord :: Uint32 ( u as u32 ) ) , o) ,
141
+ ( Ok ( decoder:: DataRecord :: Uint64 ( u) ) , o) => {
142
+ ( Ok ( decoder:: DataRecord :: Uint32 ( u as u32 ) ) , o)
143
+ }
148
144
e => e,
149
145
}
150
146
}
151
- s => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "u32 of size {:?}" , s) ) ) ,
152
- 0 ) ,
147
+ s => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "u32 of size {:?}" , s) ) ) , 0 ) ,
153
148
}
154
149
}
155
150
156
151
fn decode_uint16 ( & self , size : usize , offset : usize ) -> BinaryDecodeResult < decoder:: DataRecord > {
157
152
match size {
158
153
s if s <= 4 => {
159
154
match self . decode_uint64 ( size, offset) {
160
- ( Ok ( decoder:: DataRecord :: Uint64 ( u) ) , o) =>
161
- ( Ok ( decoder:: DataRecord :: Uint16 ( u as u16 ) ) , o) ,
155
+ ( Ok ( decoder:: DataRecord :: Uint64 ( u) ) , o) => {
156
+ ( Ok ( decoder:: DataRecord :: Uint16 ( u as u16 ) ) , o)
157
+ }
162
158
e => e,
163
159
}
164
160
}
165
- s => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "u16 of size {:?}" , s) ) ) ,
166
- 0 ) ,
161
+ s => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "u16 of size {:?}" , s) ) ) , 0 ) ,
167
162
}
168
163
}
169
164
@@ -173,12 +168,11 @@ impl BinaryDecoder {
173
168
let new_offset = offset + size;
174
169
175
170
let value = self . buf [ offset..new_offset]
176
- . iter ( )
177
- . fold ( 0i32 , |acc, & b| ( acc << 8 ) | b as i32 ) ;
171
+ . iter ( )
172
+ . fold ( 0i32 , |acc, & b| ( acc << 8 ) | b as i32 ) ;
178
173
( Ok ( decoder:: DataRecord :: Int32 ( value) ) , new_offset)
179
174
}
180
- s => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "int32 of size {:?}" , s) ) ) ,
181
- 0 ) ,
175
+ s => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "int32 of size {:?}" , s) ) ) , 0 ) ,
182
176
}
183
177
}
184
178
@@ -199,10 +193,12 @@ impl BinaryDecoder {
199
193
200
194
let str_key = match key {
201
195
decoder:: DataRecord :: String ( s) => s,
202
- v => return ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "unexpected map \
203
- key type {:?}",
204
- v) ) ) ,
205
- 0 ) ,
196
+ v => {
197
+ return ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "unexpected map \
198
+ key type {:?}",
199
+ v) ) ) ,
200
+ 0 )
201
+ }
206
202
} ;
207
203
values. insert ( str_key, val) ;
208
204
}
@@ -239,9 +235,10 @@ impl BinaryDecoder {
239
235
let bytes = & self . buf [ offset..new_offset] ;
240
236
match from_utf8 ( bytes) {
241
237
Ok ( v) => ( Ok ( decoder:: DataRecord :: String ( v. to_owned ( ) ) ) , new_offset) ,
242
- Err ( _) =>
238
+ Err ( _) => {
243
239
( Err ( MaxMindDBError :: InvalidDatabaseError ( "error decoding string" . to_owned ( ) ) ) ,
244
- new_offset) ,
240
+ new_offset)
241
+ }
245
242
}
246
243
}
247
244
@@ -281,12 +278,8 @@ impl BinaryDecoder {
281
278
size = match size {
282
279
s if s < 29 => s,
283
280
29 => 29usize + size_bytes[ 0 ] as usize ,
284
- 30 => {
285
- 285usize + to_usize ( 0 , size_bytes)
286
- }
287
- _ => {
288
- 65821usize + to_usize ( 0 , size_bytes)
289
- }
281
+ 30 => 285usize + to_usize ( 0 , size_bytes) ,
282
+ _ => 65821usize + to_usize ( 0 , size_bytes) ,
290
283
} ;
291
284
( size, new_offset)
292
285
}
@@ -311,8 +304,10 @@ impl BinaryDecoder {
311
304
11 => self . decode_array ( size, offset) ,
312
305
14 => self . decode_bool ( size, offset) ,
313
306
15 => self . decode_float ( size, offset) ,
314
- u => ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "Unknown data type: {:?}" , u) ) ) ,
315
- offset) ,
307
+ u => {
308
+ ( Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "Unknown data type: {:?}" , u) ) ) ,
309
+ offset)
310
+ }
316
311
}
317
312
}
318
313
}
@@ -326,7 +321,6 @@ pub struct Reader {
326
321
}
327
322
328
323
impl Reader {
329
-
330
324
/// Open a MaxMind DB database file.
331
325
///
332
326
/// # Example
@@ -352,9 +346,11 @@ impl Reader {
352
346
353
347
let raw_metadata = match metadata_decoder. decode ( metadata_start) {
354
348
( Ok ( m) , _) => m,
355
- m => return Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "metadata of wrong \
356
- type: {:?}",
357
- m) ) ) ,
349
+ m => {
350
+ return Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "metadata of wrong \
351
+ type: {:?}",
352
+ m) ) )
353
+ }
358
354
} ;
359
355
360
356
let mut type_decoder = decoder:: Decoder :: new ( raw_metadata) ;
@@ -401,7 +397,7 @@ impl Reader {
401
397
let pointer = try!( self . find_address_in_tree ( ip_bytes) ) ;
402
398
if pointer == 0 {
403
399
return Err ( MaxMindDBError :: AddressNotFoundError ( "Address not found in database"
404
- . to_owned ( ) ) ) ;
400
+ . to_owned ( ) ) ) ;
405
401
}
406
402
let rec = try!( self . resolve_data_pointer ( pointer) ) ;
407
403
let mut decoder = decoder:: Decoder :: new ( rec) ;
@@ -479,9 +475,11 @@ impl Reader {
479
475
let offset = base_offset + index * 4 ;
480
476
to_usize ( 0 , & self . decoder . buf [ offset..offset + 4 ] )
481
477
}
482
- s => return Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "unknown record size: \
483
- {:?}",
484
- s) ) ) ,
478
+ s => {
479
+ return Err ( MaxMindDBError :: InvalidDatabaseError ( format ! ( "unknown record size: \
480
+ {:?}",
481
+ s) ) )
482
+ }
485
483
} ;
486
484
Ok ( val)
487
485
}
@@ -494,7 +492,7 @@ impl Reader {
494
492
if resolved > self . decoder . buf . len ( ) {
495
493
return Err ( MaxMindDBError :: InvalidDatabaseError ( "the MaxMind DB file's search tree \
496
494
is corrupt"
497
- . to_owned ( ) ) ) ;
495
+ . to_owned ( ) ) ) ;
498
496
}
499
497
500
498
let ( record, _) = self . decoder . decode ( resolved) ;
@@ -555,7 +553,7 @@ fn find_metadata_start(buf: &[u8]) -> Result<usize, MaxMindDBError> {
555
553
}
556
554
}
557
555
Err ( MaxMindDBError :: InvalidDatabaseError ( "Could not find MaxMind DB metadata in file."
558
- . to_owned ( ) ) )
556
+ . to_owned ( ) ) )
559
557
}
560
558
561
559
mod decoder;
0 commit comments