difftreelog
refactor optimize properties iteration
in: master
4 files changed
pallets/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()
});
pallets/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(),
primitives/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 {
runtime/common/src/runtime_apis.rsdiffbeforeafterboth257 }257 }258 None => {258 None => {259 properties259 properties260 .iter()260 .into_iter()261 .filter_map(|(key, value)| Some(RmrkPropertyInfo {261 .filter_map(|(key, value)| Some(RmrkPropertyInfo {262 key: key.decode_or_default(),262 key: key.decode_or_default(),263 value: value.decode_or_default(),263 value: value.decode_or_default(),296 }296 }297 None => {297 None => {298 properties298 properties299 .iter()299 .into_iter()300 .filter_map(|(key, value)| Some(RmrkPropertyInfo {300 .filter_map(|(key, value)| Some(RmrkPropertyInfo {301 key: key.decode_or_default(),301 key: key.decode_or_default(),302 value: value.decode_or_default(),302 value: value.decode_or_default(),