difftreelog
refactor optimize properties iteration
in: master
4 files changed
pallets/common/src/lib.rsdiffbeforeafterboth608 } = <CollectionById<T>>::get(collection)?;608 } = <CollectionById<T>>::get(collection)?;609609610 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();617617618 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();625625947 })947 })948 .unwrap_or_else(|| {948 .unwrap_or_else(|| {949 properties949 properties950 .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 permissions982 .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 });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.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(),