From 96e846e3b06d39e422be3d47a3d9d251701321bb Mon Sep 17 00:00:00 2001 From: Daniel Shiposha Date: Wed, 18 May 2022 16:18:50 +0000 Subject: [PATCH] refactor: more abstract try_set_from_iter for properties --- --- a/primitives/data-structs/src/lib.rs +++ b/primitives/data-structs/src/lib.rs @@ -657,6 +657,12 @@ pub value: PropertyValue, } +impl Into<(PropertyKey, PropertyValue)> for Property { + fn into(self) -> (PropertyKey, PropertyValue) { + (self.key, self.value) + } +} + #[derive(Encode, Decode, TypeInfo, Debug, MaxEncodedLen, PartialEq, Clone)] #[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub struct PropertyKeyPermission { @@ -666,6 +672,12 @@ pub permission: PropertyPermission, } +impl Into<(PropertyKey, PropertyPermission)> for PropertyKeyPermission { + fn into(self) -> (PropertyKey, PropertyPermission) { + (self.key, self.permission) + } +} + pub enum PropertiesError { NoSpaceForProperty, PropertyLimitReached, @@ -704,15 +716,17 @@ value: Self::Value, ) -> Result<(), PropertiesError>; - fn try_scoped_set_from_iter( + fn try_scoped_set_from_iter( &mut self, scope: PropertyScope, iter: I, ) -> Result<(), PropertiesError> where - I: Iterator, + I: Iterator, + KV: Into<(PropertyKey, Self::Value)> { - for (key, value) in iter { + for kv in iter { + let (key, value) = kv.into(); self.try_scoped_set(scope, key, value)?; } @@ -723,9 +737,10 @@ self.try_scoped_set(PropertyScope::None, key, value) } - fn try_set_from_iter(&mut self, iter: I) -> Result<(), PropertiesError> + fn try_set_from_iter(&mut self, iter: I) -> Result<(), PropertiesError> where - I: Iterator, + I: Iterator, + KV: Into<(PropertyKey, Self::Value)> { self.try_scoped_set_from_iter(PropertyScope::None, iter) } -- gitstuff