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
--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -608,18 +608,18 @@
 		} = <CollectionById<T>>::get(collection)?;
 
 		let token_property_permissions = <CollectionPropertyPermissions<T>>::get(collection)
-			.iter()
+			.into_iter()
 			.map(|(key, permission)| PropertyKeyPermission {
-				key: key.clone(),
-				permission: permission.clone(),
+				key,
+				permission,
 			})
 			.collect();
 
 		let properties = <CollectionProperties<T>>::get(collection)
-			.iter()
+			.into_iter()
 			.map(|(key, value)| Property {
-				key: key.clone(),
-				value: value.clone(),
+				key,
+				value,
 			})
 			.collect();
 
@@ -947,10 +947,10 @@
 			})
 			.unwrap_or_else(|| {
 				properties
-					.iter()
+					.into_iter()
 					.map(|(key, value)| Property {
-						key: key.clone(),
-						value: value.clone(),
+						key,
+						value,
 					})
 					.collect()
 			});
@@ -979,10 +979,10 @@
 			})
 			.unwrap_or_else(|| {
 				permissions
-					.iter()
+					.into_iter()
 					.map(|(key, permission)| PropertyKeyPermission {
-						key: key.clone(),
-						permission: permission.clone(),
+						key,
+						permission,
 					})
 					.collect()
 			});
modifiedpallets/nonfungible/src/common.rsdiffbeforeafterboth
405 })405 })
406 .unwrap_or_else(|| {406 .unwrap_or_else(|| {
407 properties407 properties
408 .iter()408 .into_iter()
409 .map(|(key, value)| Property {409 .map(|(key, value)| Property {
410 key: key.clone(),410 key: key.clone(),
411 value: value.clone(),411 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(),