@@ -10,8 +10,8 @@ use crate::{
10
10
set_apply, set_partial_eq, set_try_apply,
11
11
utility:: { reflect_hasher, GenericTypeInfoCell , GenericTypePathCell , NonGenericTypeInfoCell } ,
12
12
ApplyError , Array , ArrayInfo , ArrayIter , DynamicMap , DynamicTypePath , FromReflect , FromType ,
13
- Generics , GetTypeRegistration , List , ListInfo , ListIter , Map , MapInfo , MapIter , MaybeTyped ,
14
- OpaqueInfo , PartialReflect , Reflect , ReflectCloneError , ReflectDeserialize , ReflectFromPtr ,
13
+ Generics , GetTypeRegistration , List , ListInfo , ListIter , Map , MapInfo , MaybeTyped , OpaqueInfo ,
14
+ PartialReflect , Reflect , ReflectCloneError , ReflectDeserialize , ReflectFromPtr ,
15
15
ReflectFromReflect , ReflectKind , ReflectMut , ReflectOwned , ReflectRef , ReflectSerialize , Set ,
16
16
SetInfo , TypeInfo , TypeParamInfo , TypePath , TypeRegistration , TypeRegistry , Typed ,
17
17
} ;
@@ -736,27 +736,12 @@ macro_rules! impl_reflect_for_hashmap {
736
736
. map( |value| value as & mut dyn PartialReflect )
737
737
}
738
738
739
- fn get_at( & self , index: usize ) -> Option <( & dyn PartialReflect , & dyn PartialReflect ) > {
740
- self . iter( )
741
- . nth( index)
742
- . map( |( key, value) | ( key as & dyn PartialReflect , value as & dyn PartialReflect ) )
743
- }
744
-
745
- fn get_at_mut(
746
- & mut self ,
747
- index: usize ,
748
- ) -> Option <( & dyn PartialReflect , & mut dyn PartialReflect ) > {
749
- self . iter_mut( ) . nth( index) . map( |( key, value) | {
750
- ( key as & dyn PartialReflect , value as & mut dyn PartialReflect )
751
- } )
752
- }
753
-
754
739
fn len( & self ) -> usize {
755
740
Self :: len( self )
756
741
}
757
742
758
- fn iter( & self ) -> MapIter {
759
- MapIter :: new( self )
743
+ fn iter( & self ) -> Box <dyn Iterator < Item = ( & dyn PartialReflect , & dyn PartialReflect ) > + ' _> {
744
+ Box :: new( self . iter ( ) . map ( | ( k , v ) | ( k . as_partial_reflect ( ) , v . as_partial_reflect ( ) ) ) )
760
745
}
761
746
762
747
fn drain( & mut self ) -> Vec <( Box <dyn PartialReflect >, Box <dyn PartialReflect >) > {
@@ -770,6 +755,10 @@ macro_rules! impl_reflect_for_hashmap {
770
755
. collect( )
771
756
}
772
757
758
+ fn retain( & mut self , f: & mut dyn FnMut ( & dyn PartialReflect , & mut dyn PartialReflect ) -> bool ) {
759
+ self . retain( move |key, value| f( key, value) ) ;
760
+ }
761
+
773
762
fn to_dynamic_map( & self ) -> DynamicMap {
774
763
let mut dynamic_map = DynamicMap :: default ( ) ;
775
764
dynamic_map. set_represented_type( self . get_represented_type_info( ) ) ;
@@ -1030,6 +1019,10 @@ macro_rules! impl_reflect_for_hashset {
1030
1019
. collect( )
1031
1020
}
1032
1021
1022
+ fn retain( & mut self , f: & mut dyn FnMut ( & dyn PartialReflect ) -> bool ) {
1023
+ self . retain( move |value| f( value) ) ;
1024
+ }
1025
+
1033
1026
fn insert_boxed( & mut self , value: Box <dyn PartialReflect >) -> bool {
1034
1027
let value = V :: take_from_reflect( value) . unwrap_or_else( |value| {
1035
1028
panic!(
@@ -1248,27 +1241,15 @@ where
1248
1241
. map ( |value| value as & mut dyn PartialReflect )
1249
1242
}
1250
1243
1251
- fn get_at ( & self , index : usize ) -> Option < ( & dyn PartialReflect , & dyn PartialReflect ) > {
1252
- self . iter ( )
1253
- . nth ( index)
1254
- . map ( |( key, value) | ( key as & dyn PartialReflect , value as & dyn PartialReflect ) )
1255
- }
1256
-
1257
- fn get_at_mut (
1258
- & mut self ,
1259
- index : usize ,
1260
- ) -> Option < ( & dyn PartialReflect , & mut dyn PartialReflect ) > {
1261
- self . iter_mut ( )
1262
- . nth ( index)
1263
- . map ( |( key, value) | ( key as & dyn PartialReflect , value as & mut dyn PartialReflect ) )
1264
- }
1265
-
1266
1244
fn len ( & self ) -> usize {
1267
1245
Self :: len ( self )
1268
1246
}
1269
1247
1270
- fn iter ( & self ) -> MapIter {
1271
- MapIter :: new ( self )
1248
+ fn iter ( & self ) -> Box < dyn Iterator < Item = ( & dyn PartialReflect , & dyn PartialReflect ) > + ' _ > {
1249
+ Box :: new (
1250
+ self . iter ( )
1251
+ . map ( |( k, v) | ( k. as_partial_reflect ( ) , v. as_partial_reflect ( ) ) ) ,
1252
+ )
1272
1253
}
1273
1254
1274
1255
fn drain ( & mut self ) -> Vec < ( Box < dyn PartialReflect > , Box < dyn PartialReflect > ) > {
@@ -1285,6 +1266,10 @@ where
1285
1266
result
1286
1267
}
1287
1268
1269
+ fn retain ( & mut self , f : & mut dyn FnMut ( & dyn PartialReflect , & mut dyn PartialReflect ) -> bool ) {
1270
+ self . retain ( move |key, value| f ( key, value) ) ;
1271
+ }
1272
+
1288
1273
fn clone_dynamic ( & self ) -> DynamicMap {
1289
1274
let mut dynamic_map = DynamicMap :: default ( ) ;
1290
1275
dynamic_map. set_represented_type ( self . get_represented_type_info ( ) ) ;
0 commit comments