@@ -80,30 +80,32 @@ where
80
80
V : Update ,
81
81
{
82
82
unsafe fn maybe_update ( old_pointer : * mut Self , new_map : Self ) -> bool {
83
- let old_map = unsafe { & mut * old_pointer } ;
84
-
85
- // Check if the keys in both maps are the same w.r.t the key order.
86
- let is_key_same = old_map. len ( ) == new_map. len ( )
87
- && old_map
88
- . keys ( )
89
- . zip ( new_map. keys ( ) )
90
- . all ( |( old, new) | old == new) ;
91
-
92
- // If the keys are different, update entire map.
93
- if !is_key_same {
94
- old_map. clear ( ) ;
95
- old_map. 0 . extend ( new_map. 0 ) ;
96
- return true ;
83
+ unsafe {
84
+ let old_map = & mut * old_pointer;
85
+
86
+ // Check if the keys in both maps are the same w.r.t the key order.
87
+ let is_key_same = old_map. len ( ) == new_map. len ( )
88
+ && old_map
89
+ . keys ( )
90
+ . zip ( new_map. keys ( ) )
91
+ . all ( |( old, new) | old == new) ;
92
+
93
+ // If the keys are different, update entire map.
94
+ if !is_key_same {
95
+ old_map. clear ( ) ;
96
+ old_map. 0 . extend ( new_map. 0 ) ;
97
+ return true ;
98
+ }
99
+
100
+ // Update values if it's different.
101
+ let mut changed = false ;
102
+ for ( i, new_value) in new_map. 0 . into_values ( ) . enumerate ( ) {
103
+ let old_value = & mut old_map[ i] ;
104
+ changed |= V :: maybe_update ( old_value, new_value) ;
105
+ }
106
+
107
+ changed
97
108
}
98
-
99
- // Update values if it's different.
100
- let mut changed = false ;
101
- for ( i, new_value) in new_map. 0 . into_values ( ) . enumerate ( ) {
102
- let old_value = & mut old_map[ i] ;
103
- changed |= V :: maybe_update ( old_value, new_value) ;
104
- }
105
-
106
- changed
107
109
}
108
110
}
109
111
0 commit comments