72
72
T : Into < Value > ,
73
73
{
74
74
fn from ( values : HashMap < String , T > ) -> Self {
75
- let mut r = HashMap :: new ( ) ;
76
-
77
- for ( k, v) in values {
78
- r. insert ( k. clone ( ) , v. into ( ) ) ;
79
- }
80
-
81
- ValueKind :: Table ( r)
75
+ let t = values. into_iter ( ) . map ( |( k, v) | ( k, v. into ( ) ) ) . collect ( ) ;
76
+ ValueKind :: Table ( t)
82
77
}
83
78
}
84
79
87
82
T : Into < Value > ,
88
83
{
89
84
fn from ( values : Vec < T > ) -> Self {
90
- let mut l = Vec :: new ( ) ;
91
-
92
- for v in values {
93
- l. push ( v. into ( ) ) ;
94
- }
95
-
96
- ValueKind :: Array ( l)
85
+ ValueKind :: Array ( values. into_iter ( ) . map ( T :: into) . collect ( ) )
97
86
}
98
87
}
99
88
@@ -105,10 +94,15 @@ impl Display for ValueKind {
105
94
ValueKind :: Integer ( value) => write ! ( f, "{}" , value) ,
106
95
ValueKind :: Float ( value) => write ! ( f, "{}" , value) ,
107
96
ValueKind :: Nil => write ! ( f, "nil" ) ,
108
-
109
- // TODO: Figure out a nice Display for these
110
- ValueKind :: Table ( ref table) => write ! ( f, "{:?}" , table) ,
111
- ValueKind :: Array ( ref array) => write ! ( f, "{:?}" , array) ,
97
+ ValueKind :: Table ( ref table) => write ! ( f, "{{ {} }}" , {
98
+ table
99
+ . iter( )
100
+ . map( |( k, v) | format!( "{} => {}, " , k, v) )
101
+ . collect:: <String >( )
102
+ } ) ,
103
+ ValueKind :: Array ( ref array) => write ! ( f, "{:?}" , {
104
+ array. iter( ) . map( |e| format!( "{}, " , e) ) . collect:: <String >( )
105
+ } ) ,
112
106
}
113
107
}
114
108
}
0 commit comments