From 2169a96b9666be3248c1af1735b09eb6303a6a11 Mon Sep 17 00:00:00 2001 From: Daniel Shiposha Date: Wed, 25 May 2022 11:45:18 +0000 Subject: [PATCH] refactor: optimize properties iteration --- --- a/pallets/common/src/lib.rs +++ b/pallets/common/src/lib.rs @@ -608,18 +608,18 @@ } = >::get(collection)?; let token_property_permissions = >::get(collection) - .iter() + .into_iter() .map(|(key, permission)| PropertyKeyPermission { - key: key.clone(), - permission: permission.clone(), + key, + permission, }) .collect(); let properties = >::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() }); --- 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(), --- 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 { - self.0.iter() - } - - pub fn into_iter(self) -> impl Iterator { - 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 IntoIterator for PropertiesMap { + type Item = (PropertyKey, Value); + type IntoIter = < + BoundedBTreeMap< + PropertyKey, + Value, + ConstU32 + > as IntoIterator + >::IntoIter; + + fn into_iter(self) -> Self::IntoIter { + self.0.into_iter() + } +} + impl TrySetProperty for PropertiesMap { 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 { - self.map.iter() - } +impl IntoIterator for Properties { + type Item = (PropertyKey, PropertyValue); + type IntoIter = as IntoIterator>::IntoIter; - pub fn into_iter(self) -> impl Iterator { - self.map.into_iter() - } + fn into_iter(self) -> Self::IntoIter { + self.map.into_iter() + } } impl TrySetProperty for Properties { --- 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(), -- gitstuff