git.delta.rocks / unique-network / refs/commits / db3e5b128884

difftreelog

fix modifying a property doesn't change consumed space

Daniel Shiposha2022-12-14parent: #558ad52.patch.diff
in: master

1 file changed

modifiedprimitives/data-structs/src/lib.rsdiffbeforeafterboth
1133 scope: PropertyScope,1133 scope: PropertyScope,
1134 key: PropertyKey,1134 key: PropertyKey,
1135 value: Self::Value,1135 value: Self::Value,
1136 ) -> Result<(), PropertiesError>;1136 ) -> Result<Option<Self::Value>, PropertiesError>;
11371137
1138 /// Try to set property with scope from iterator.1138 /// Try to set property with scope from iterator.
1139 fn try_scoped_set_from_iter<I, KV>(1139 fn try_scoped_set_from_iter<I, KV>(
1154 }1154 }
11551155
1156 /// Try to set property.1156 /// Try to set property.
1157 fn try_set(&mut self, key: PropertyKey, value: Self::Value) -> Result<(), PropertiesError> {1157 fn try_set(
1158 &mut self,
1159 key: PropertyKey,
1160 value: Self::Value,
1161 ) -> Result<Option<Self::Value>, PropertiesError> {
1158 self.try_scoped_set(PropertyScope::None, key, value)1162 self.try_scoped_set(PropertyScope::None, key, value)
1159 }1163 }
11601164
1239 scope: PropertyScope,1243 scope: PropertyScope,
1240 key: PropertyKey,1244 key: PropertyKey,
1241 value: Self::Value,1245 value: Self::Value,
1242 ) -> Result<(), PropertiesError> {1246 ) -> Result<Option<Self::Value>, PropertiesError> {
1243 Self::check_property_key(&key)?;1247 Self::check_property_key(&key)?;
12441248
1245 let key = scope.apply(key)?;1249 let key = scope.apply(key)?;
1246 self.01250 self.0
1247 .try_insert(key, value)1251 .try_insert(key, value)
1248 .map_err(|_| PropertiesError::PropertyLimitReached)?;1252 .map_err(|_| PropertiesError::PropertyLimitReached)
1249
1250 Ok(())
1251 }1253 }
1252}1254}
12531255
1307 scope: PropertyScope,1309 scope: PropertyScope,
1308 key: PropertyKey,1310 key: PropertyKey,
1309 value: Self::Value,1311 value: Self::Value,
1310 ) -> Result<(), PropertiesError> {1312 ) -> Result<Option<Self::Value>, PropertiesError> {
1311 let value_len = value.len();1313 let value_len = value.len();
13121314
1313 if self.consumed_space as usize + value_len > self.space_limit as usize1315 if self.consumed_space as usize + value_len > self.space_limit as usize
1316 return Err(PropertiesError::NoSpaceForProperty);1318 return Err(PropertiesError::NoSpaceForProperty);
1317 }1319 }
13181320
1319 self.map.try_scoped_set(scope, key, value)?;1321 let old_value = self.map.try_scoped_set(scope, key, value)?;
13201322
1323 if old_value.is_none() {
1321 self.consumed_space += value_len as u32;1324 self.consumed_space += value_len as u32;
1325 }
13221326
1323 Ok(())1327 Ok(old_value)
1324 }1328 }
1325}1329}
13261330