git.delta.rocks / unique-network / refs/commits / 2169a96b9666

difftreelog

refactor optimize properties iteration

Daniel Shiposha2022-05-25parent: #27800fe.patch.diff
in: master

4 files changed

modifiedpallets/common/src/lib.rsdiffbeforeafterboth
608 } = <CollectionById<T>>::get(collection)?;608 } = <CollectionById<T>>::get(collection)?;
609609
610 let token_property_permissions = <CollectionPropertyPermissions<T>>::get(collection)610 let token_property_permissions = <CollectionPropertyPermissions<T>>::get(collection)
611 .iter()611 .into_iter()
612 .map(|(key, permission)| PropertyKeyPermission {612 .map(|(key, permission)| PropertyKeyPermission {
613 key: key.clone(),613 key,
614 permission: permission.clone(),614 permission,
615 })615 })
616 .collect();616 .collect();
617617
618 let properties = <CollectionProperties<T>>::get(collection)618 let properties = <CollectionProperties<T>>::get(collection)
619 .iter()619 .into_iter()
620 .map(|(key, value)| Property {620 .map(|(key, value)| Property {
621 key: key.clone(),621 key,
622 value: value.clone(),622 value,
623 })623 })
624 .collect();624 .collect();
625625
947 })947 })
948 .unwrap_or_else(|| {948 .unwrap_or_else(|| {
949 properties949 properties
950 .iter()950 .into_iter()
951 .map(|(key, value)| Property {951 .map(|(key, value)| Property {
952 key: key.clone(),952 key,
953 value: value.clone(),953 value,
954 })954 })
955 .collect()955 .collect()
956 });956 });
979 })979 })
980 .unwrap_or_else(|| {980 .unwrap_or_else(|| {
981 permissions981 permissions
982 .iter()982 .into_iter()
983 .map(|(key, permission)| PropertyKeyPermission {983 .map(|(key, permission)| PropertyKeyPermission {
984 key: key.clone(),984 key,
985 permission: permission.clone(),985 permission,
986 })986 })
987 .collect()987 .collect()
988 });988 });
modifiedpallets/nonfungible/src/common.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/common.rs
+++ b/pallets/nonfungible/src/common.rs
@@ -405,7 +405,7 @@
 		})
 		.unwrap_or_else(|| {
 			properties
-				.iter()
+				.into_iter()
 				.map(|(key, value)| Property {
 					key: key.clone(),
 					value: value.clone(),
modifiedprimitives/data-structs/src/lib.rsdiffbeforeafterboth
--- a/primitives/data-structs/src/lib.rs
+++ b/primitives/data-structs/src/lib.rs
@@ -771,14 +771,6 @@
 		self.0.get(key)
 	}
 
-	pub fn iter(&self) -> impl Iterator<Item = (&PropertyKey, &Value)> {
-		self.0.iter()
-	}
-
-	pub fn into_iter(self) -> impl Iterator<Item = (PropertyKey, Value)> {
-		self.0.into_iter()
-	}
-
 	fn check_property_key(key: &PropertyKey) -> Result<(), PropertiesError> {
 		if key.is_empty() {
 			return Err(PropertiesError::EmptyPropertyKey);
@@ -796,6 +788,21 @@
 	}
 }
 
+impl<Value> IntoIterator for PropertiesMap<Value> {
+	type Item = (PropertyKey, Value);
+	type IntoIter = <
+		BoundedBTreeMap<
+			PropertyKey,
+			Value,
+			ConstU32<MAX_PROPERTIES_PER_ITEM>
+		> as IntoIterator
+	>::IntoIter;
+
+	fn into_iter(self) -> Self::IntoIter {
+        self.0.into_iter()
+    }
+}
+
 impl<Value> TrySetProperty for PropertiesMap<Value> {
 	type Value = Value;
 
@@ -848,14 +855,15 @@
 	pub fn get(&self, key: &PropertyKey) -> Option<&PropertyValue> {
 		self.map.get(key)
 	}
+}
 
-	pub fn iter(&self) -> impl Iterator<Item = (&PropertyKey, &PropertyValue)> {
-		self.map.iter()
-	}
+impl IntoIterator for Properties {
+	type Item = (PropertyKey, PropertyValue);
+	type IntoIter = <PropertiesMap<PropertyValue> as IntoIterator>::IntoIter;
 
-	pub fn into_iter(self) -> impl Iterator<Item = (PropertyKey, PropertyValue)> {
-		self.map.into_iter()
-	}
+	fn into_iter(self) -> Self::IntoIter {
+        self.map.into_iter()
+    }
 }
 
 impl TrySetProperty for Properties {
modifiedruntime/common/src/runtime_apis.rsdiffbeforeafterboth
--- a/runtime/common/src/runtime_apis.rs
+++ b/runtime/common/src/runtime_apis.rs
@@ -257,7 +257,7 @@
                         }
                         None => {
                             properties
-                                .iter()
+                                .into_iter()
                                 .filter_map(|(key, value)| Some(RmrkPropertyInfo {
                                     key: key.decode_or_default(),
                                     value: value.decode_or_default(),
@@ -296,7 +296,7 @@
                         }
                         None => {
                             properties
-                                .iter()
+                                .into_iter()
                                 .filter_map(|(key, value)| Some(RmrkPropertyInfo {
                                     key: key.decode_or_default(),
                                     value: value.decode_or_default(),