@@ -110,7 +110,7 @@ fn collect_into_key_eq_map<
110110> (
111111 list : B ,
112112) -> HashMap < & ' a K , & ' a V > {
113- let mut map: HashMap < & K , & V > = HashMap :: new ( ) ;
113+ let mut map: HashMap < & K , & V > = HashMap :: with_capacity ( list . size_hint ( ) . 1 . unwrap_or_default ( ) ) ;
114114 for ( key, value) in list {
115115 map. insert ( key, value) ;
116116 }
@@ -170,7 +170,8 @@ pub fn unordered_hashcmp<
170170 ) ) ;
171171 }
172172
173- let mut ret: Vec < UnorderedMapLikeRecursiveChangeRef < ' a , K , V > > = vec ! [ ] ;
173+ let mut ret: Vec < UnorderedMapLikeRecursiveChangeRef < ' a , K , V > > =
174+ Vec :: with_capacity ( ( previous. len ( ) + current. len ( ) ) >> 1 ) ;
174175
175176 for prev_entry in previous. into_iter ( ) {
176177 if current. remove_entry ( prev_entry. 0 ) . is_none ( ) {
@@ -188,6 +189,8 @@ pub fn unordered_hashcmp<
188189 ) )
189190 }
190191
192+ ret. shrink_to_fit ( ) ;
193+
191194 match ret. is_empty ( ) {
192195 true => None ,
193196 false => Some ( UnorderedMapLikeRecursiveDiffRef (
@@ -203,7 +206,8 @@ pub fn unordered_hashcmp<
203206 ) ) ;
204207 }
205208
206- let mut ret: Vec < UnorderedMapLikeRecursiveChangeRef < ' a , K , V > > = vec ! [ ] ;
209+ let mut ret: Vec < UnorderedMapLikeRecursiveChangeRef < ' a , K , V > > =
210+ Vec :: with_capacity ( ( previous. len ( ) + current. len ( ) ) >> 1 ) ;
207211
208212 for prev_entry in previous. into_iter ( ) {
209213 match current. remove_entry ( prev_entry. 0 ) {
@@ -228,6 +232,8 @@ pub fn unordered_hashcmp<
228232 ) )
229233 }
230234
235+ ret. shrink_to_fit ( ) ;
236+
231237 match ret. is_empty ( ) {
232238 true => None ,
233239 false => Some ( UnorderedMapLikeRecursiveDiffRef (
@@ -245,7 +251,7 @@ pub fn apply_unordered_hashdiffs<
245251> (
246252 list : B ,
247253 diffs : UnorderedMapLikeRecursiveDiffOwned < K , V > ,
248- ) -> Box < dyn Iterator < Item = ( K , V ) > > {
254+ ) -> Box < dyn ExactSizeIterator < Item = ( K , V ) > > {
249255 let diffs = match diffs {
250256 UnorderedMapLikeRecursiveDiffOwned (
251257 UnorderedMapLikeRecursiveDiffInternalOwned :: Replace ( replacement) ,
0 commit comments