fix(trie): fix let-chain syntax and clippy warnings

- Replace Rust 2024 let-chains with nested if statements
- Add #[allow(clippy::collapsible_if)] to suppress false positive
This commit is contained in:
yongkangc
2026-01-06 04:51:02 +00:00
parent 80082c330d
commit 6a100d6175
2 changed files with 54 additions and 36 deletions

View File

@@ -111,6 +111,7 @@ where
/// This method implements a locality optimization: if the cursor is already positioned
/// and the target key is >= the current position, we use `next_dup_val` to walk forward
/// instead of performing an expensive `seek_by_key_subkey` operation.
#[allow(clippy::collapsible_if)]
fn seek(&mut self, subkey: B256) -> Result<Option<(B256, Self::Value)>, DatabaseError> {
// Locality optimization: if cursor is positioned and target is ahead,
// walk forward using next_dup_val instead of seeking
@@ -126,12 +127,13 @@ where
// Exhausted the duplicates, no match found
self.last_key = None;
return Ok(None);
} else if subkey == last &&
let Some((_, entry)) = self.cursor.current()? &&
entry.key == subkey
{
} else if subkey == last {
// Re-seeking the same key, return current position if still valid
return Ok(Some((entry.key, entry.value)));
if let Some((_, entry)) = self.cursor.current()? {
if entry.key == subkey {
return Ok(Some((entry.key, entry.value)));
}
}
}
}
@@ -316,10 +318,7 @@ mod tests {
provider.tx_ref().cursor_dup_write::<tables::HashedStorages>().unwrap();
for (i, key) in keys.iter().enumerate() {
cursor
.upsert(
address1,
&StorageEntry { key: *key, value: U256::from(i as u64) },
)
.upsert(address1, &StorageEntry { key: *key, value: U256::from(i as u64) })
.unwrap();
cursor
.upsert(

View File

@@ -192,6 +192,7 @@ where
/// This method implements a locality optimization: if the cursor is already positioned
/// and the target key is >= the current position, we use `next_dup` to walk forward
/// instead of performing an expensive `seek_by_key_subkey` operation.
#[allow(clippy::collapsible_if)]
fn seek(
&mut self,
key: Nibbles,
@@ -210,12 +211,13 @@ where
// Exhausted the duplicates, no match found
self.last_key = None;
return Ok(None);
} else if key == last &&
let Some((_, entry)) = self.cursor.current()? &&
entry.nibbles.0 == key
{
} else if key == last {
// Re-seeking the same key, return current position if still valid
return Ok(Some((entry.nibbles.0, entry.node)));
if let Some((_, entry)) = self.cursor.current()? {
if entry.nibbles.0 == key {
return Ok(Some((entry.nibbles.0, entry.node)));
}
}
}
}
@@ -346,13 +348,15 @@ mod tests {
// Insert test data
{
let mut cursor =
provider.tx_ref().cursor_dup_write::<tables::StoragesTrie>().unwrap();
let mut cursor = provider.tx_ref().cursor_dup_write::<tables::StoragesTrie>().unwrap();
for key in &keys {
cursor
.upsert(
hashed_address,
&StorageTrieEntry { nibbles: StoredNibblesSubKey(*key), node: create_test_node() },
&StorageTrieEntry {
nibbles: StoredNibblesSubKey(*key),
node: create_test_node(),
},
)
.unwrap();
}
@@ -381,13 +385,15 @@ mod tests {
// Insert test data
{
let mut cursor =
provider.tx_ref().cursor_dup_write::<tables::StoragesTrie>().unwrap();
let mut cursor = provider.tx_ref().cursor_dup_write::<tables::StoragesTrie>().unwrap();
for key in &keys {
cursor
.upsert(
hashed_address,
&StorageTrieEntry { nibbles: StoredNibblesSubKey(*key), node: create_test_node() },
&StorageTrieEntry {
nibbles: StoredNibblesSubKey(*key),
node: create_test_node(),
},
)
.unwrap();
}
@@ -417,13 +423,15 @@ mod tests {
// Insert test data
{
let mut cursor =
provider.tx_ref().cursor_dup_write::<tables::StoragesTrie>().unwrap();
let mut cursor = provider.tx_ref().cursor_dup_write::<tables::StoragesTrie>().unwrap();
for key in &keys {
cursor
.upsert(
hashed_address,
&StorageTrieEntry { nibbles: StoredNibblesSubKey(*key), node: create_test_node() },
&StorageTrieEntry {
nibbles: StoredNibblesSubKey(*key),
node: create_test_node(),
},
)
.unwrap();
}
@@ -463,19 +471,24 @@ mod tests {
// Insert test data for both addresses
{
let mut cursor =
provider.tx_ref().cursor_dup_write::<tables::StoragesTrie>().unwrap();
let mut cursor = provider.tx_ref().cursor_dup_write::<tables::StoragesTrie>().unwrap();
for key in &keys {
cursor
.upsert(
address1,
&StorageTrieEntry { nibbles: StoredNibblesSubKey(*key), node: node1.clone() },
&StorageTrieEntry {
nibbles: StoredNibblesSubKey(*key),
node: node1.clone(),
},
)
.unwrap();
cursor
.upsert(
address2,
&StorageTrieEntry { nibbles: StoredNibblesSubKey(*key), node: node2.clone() },
&StorageTrieEntry {
nibbles: StoredNibblesSubKey(*key),
node: node2.clone(),
},
)
.unwrap();
}
@@ -507,13 +520,15 @@ mod tests {
// Insert test data
{
let mut cursor =
provider.tx_ref().cursor_dup_write::<tables::StoragesTrie>().unwrap();
let mut cursor = provider.tx_ref().cursor_dup_write::<tables::StoragesTrie>().unwrap();
for key in &keys {
cursor
.upsert(
hashed_address,
&StorageTrieEntry { nibbles: StoredNibblesSubKey(*key), node: create_test_node() },
&StorageTrieEntry {
nibbles: StoredNibblesSubKey(*key),
node: create_test_node(),
},
)
.unwrap();
}
@@ -543,13 +558,15 @@ mod tests {
// Insert test data
{
let mut cursor =
provider.tx_ref().cursor_dup_write::<tables::StoragesTrie>().unwrap();
let mut cursor = provider.tx_ref().cursor_dup_write::<tables::StoragesTrie>().unwrap();
for key in &keys {
cursor
.upsert(
hashed_address,
&StorageTrieEntry { nibbles: StoredNibblesSubKey(*key), node: create_test_node() },
&StorageTrieEntry {
nibbles: StoredNibblesSubKey(*key),
node: create_test_node(),
},
)
.unwrap();
}
@@ -579,13 +596,15 @@ mod tests {
// Insert test data
{
let mut cursor =
provider.tx_ref().cursor_dup_write::<tables::StoragesTrie>().unwrap();
let mut cursor = provider.tx_ref().cursor_dup_write::<tables::StoragesTrie>().unwrap();
for key in &keys {
cursor
.upsert(
hashed_address,
&StorageTrieEntry { nibbles: StoredNibblesSubKey(*key), node: create_test_node() },
&StorageTrieEntry {
nibbles: StoredNibblesSubKey(*key),
node: create_test_node(),
},
)
.unwrap();
}