mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-28 07:27:55 +00:00
Further storage iterator refactoring (#13445)
* Remove `Backend::apply_to_key_values_while` * Add `IterArgs::start_at_exclusive` * Use `start_at_exclusive` in functions which used `Backend::apply_to_key_values_while` * Remove `Backend::apply_to_keys_while` * Remove `for_keys_with_prefix`, `for_key_values_with_prefix` and `for_child_keys_with_prefix` * Remove unnecessary `to_vec` calls * Fix unused method warning in no_std * Remove unnecessary import * Also check proof sizes in the test * Iterate over both keys and values in `prove_range_read_with_size` and add a test
This commit is contained in:
@@ -324,7 +324,6 @@ where
|
||||
{
|
||||
inner: <State as StateBackend<HashFor<Block>>>::RawIter,
|
||||
state: State,
|
||||
skip_if_first: Option<StorageKey>,
|
||||
}
|
||||
|
||||
impl<State, Block> KeysIter<State, Block>
|
||||
@@ -341,13 +340,9 @@ where
|
||||
let mut args = IterArgs::default();
|
||||
args.prefix = prefix.as_ref().map(|prefix| prefix.0.as_slice());
|
||||
args.start_at = start_at.as_ref().map(|start_at| start_at.0.as_slice());
|
||||
args.start_at_exclusive = true;
|
||||
|
||||
let start_at = args.start_at;
|
||||
Ok(Self {
|
||||
inner: state.raw_iter(args)?,
|
||||
state,
|
||||
skip_if_first: start_at.map(|key| StorageKey(key.to_vec())),
|
||||
})
|
||||
Ok(Self { inner: state.raw_iter(args)?, state })
|
||||
}
|
||||
|
||||
/// Create a new iterator over a child storage's keys.
|
||||
@@ -361,13 +356,9 @@ where
|
||||
args.prefix = prefix.as_ref().map(|prefix| prefix.0.as_slice());
|
||||
args.start_at = start_at.as_ref().map(|start_at| start_at.0.as_slice());
|
||||
args.child_info = Some(child_info);
|
||||
args.start_at_exclusive = true;
|
||||
|
||||
let start_at = args.start_at;
|
||||
Ok(Self {
|
||||
inner: state.raw_iter(args)?,
|
||||
state,
|
||||
skip_if_first: start_at.map(|key| StorageKey(key.to_vec())),
|
||||
})
|
||||
Ok(Self { inner: state.raw_iter(args)?, state })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -379,15 +370,7 @@ where
|
||||
type Item = StorageKey;
|
||||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
let key = self.inner.next_key(&self.state)?.ok().map(StorageKey)?;
|
||||
|
||||
if let Some(skipped_key) = self.skip_if_first.take() {
|
||||
if key == skipped_key {
|
||||
return self.next()
|
||||
}
|
||||
}
|
||||
|
||||
Some(key)
|
||||
self.inner.next_key(&self.state)?.ok().map(StorageKey)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -399,7 +382,6 @@ where
|
||||
{
|
||||
inner: <State as StateBackend<HashFor<Block>>>::RawIter,
|
||||
state: State,
|
||||
skip_if_first: Option<StorageKey>,
|
||||
}
|
||||
|
||||
impl<State, Block> Iterator for PairsIter<State, Block>
|
||||
@@ -410,19 +392,10 @@ where
|
||||
type Item = (StorageKey, StorageData);
|
||||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
let (key, value) = self
|
||||
.inner
|
||||
self.inner
|
||||
.next_pair(&self.state)?
|
||||
.ok()
|
||||
.map(|(key, value)| (StorageKey(key), StorageData(value)))?;
|
||||
|
||||
if let Some(skipped_key) = self.skip_if_first.take() {
|
||||
if key == skipped_key {
|
||||
return self.next()
|
||||
}
|
||||
}
|
||||
|
||||
Some((key, value))
|
||||
.map(|(key, value)| (StorageKey(key), StorageData(value)))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -440,13 +413,9 @@ where
|
||||
let mut args = IterArgs::default();
|
||||
args.prefix = prefix.as_ref().map(|prefix| prefix.0.as_slice());
|
||||
args.start_at = start_at.as_ref().map(|start_at| start_at.0.as_slice());
|
||||
args.start_at_exclusive = true;
|
||||
|
||||
let start_at = args.start_at;
|
||||
Ok(Self {
|
||||
inner: state.raw_iter(args)?,
|
||||
state,
|
||||
skip_if_first: start_at.map(|key| StorageKey(key.to_vec())),
|
||||
})
|
||||
Ok(Self { inner: state.raw_iter(args)?, state })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user