@@ -37,35 +37,30 @@ pub fn parse(
37
37
}
38
38
39
39
fn from_json5_value ( uri : Option < & String > , value : Val ) -> Value {
40
- match value {
41
- Val :: String ( v) => Value :: new ( uri, ValueKind :: String ( v) ) ,
42
-
43
- Val :: Integer ( v) => Value :: new ( uri, ValueKind :: Integer ( v) ) ,
44
-
45
- Val :: Float ( v) => Value :: new ( uri, ValueKind :: Float ( v) ) ,
46
-
47
- Val :: Boolean ( v) => Value :: new ( uri, ValueKind :: Boolean ( v) ) ,
48
-
40
+ let vk = match value {
41
+ Val :: Null => ValueKind :: Nil ,
42
+ Val :: String ( v) => ValueKind :: String ( v) ,
43
+ Val :: Integer ( v) => ValueKind :: Integer ( v) ,
44
+ Val :: Float ( v) => ValueKind :: Float ( v) ,
45
+ Val :: Boolean ( v) => ValueKind :: Boolean ( v) ,
49
46
Val :: Object ( table) => {
50
- let mut m = HashMap :: new ( ) ;
47
+ let m = table
48
+ . into_iter ( )
49
+ . map ( |( k, v) | ( k, from_json5_value ( uri, v) ) )
50
+ . collect ( ) ;
51
51
52
- for ( key, value) in table {
53
- m. insert ( key, from_json5_value ( uri, value) ) ;
54
- }
55
-
56
- Value :: new ( uri, ValueKind :: Table ( m) )
52
+ ValueKind :: Table ( m)
57
53
}
58
54
59
55
Val :: Array ( array) => {
60
- let mut l = Vec :: new ( ) ;
61
-
62
- for value in array {
63
- l. push ( from_json5_value ( uri, value) ) ;
64
- }
56
+ let l = array
57
+ . into_iter ( )
58
+ . map ( |v| from_json5_value ( uri, v) )
59
+ . collect ( ) ;
65
60
66
- Value :: new ( uri , ValueKind :: Array ( l) )
61
+ ValueKind :: Array ( l)
67
62
}
63
+ } ;
68
64
69
- Val :: Null => Value :: new ( uri, ValueKind :: Nil ) ,
70
- }
65
+ Value :: new ( uri, vk)
71
66
}
0 commit comments