reth_trie/hashed_cursor/
noop.rs

1use super::{HashedCursor, HashedCursorFactory, HashedStorageCursor};
2use alloy_primitives::B256;
3use reth_primitives::Account;
4use reth_storage_errors::db::DatabaseError;
5use revm::primitives::FlaggedStorage;
6
7/// Noop hashed cursor factory.
8#[derive(Default, Debug)]
9#[non_exhaustive]
10pub struct NoopHashedCursorFactory;
11
12impl HashedCursorFactory for NoopHashedCursorFactory {
13    type AccountCursor = NoopHashedAccountCursor;
14    type StorageCursor = NoopHashedStorageCursor;
15
16    fn hashed_account_cursor(&self) -> Result<Self::AccountCursor, DatabaseError> {
17        Ok(NoopHashedAccountCursor::default())
18    }
19
20    fn hashed_storage_cursor(
21        &self,
22        _hashed_address: B256,
23    ) -> Result<Self::StorageCursor, DatabaseError> {
24        Ok(NoopHashedStorageCursor::default())
25    }
26}
27
28/// Noop account hashed cursor.
29#[derive(Default, Debug)]
30#[non_exhaustive]
31pub struct NoopHashedAccountCursor;
32
33impl HashedCursor for NoopHashedAccountCursor {
34    type Value = Account;
35
36    fn seek(&mut self, _key: B256) -> Result<Option<(B256, Self::Value)>, DatabaseError> {
37        Ok(None)
38    }
39
40    fn next(&mut self) -> Result<Option<(B256, Self::Value)>, DatabaseError> {
41        Ok(None)
42    }
43}
44
45/// Noop account hashed cursor.
46#[derive(Default, Debug)]
47#[non_exhaustive]
48pub struct NoopHashedStorageCursor;
49
50impl HashedCursor for NoopHashedStorageCursor {
51    type Value = FlaggedStorage;
52
53    fn seek(&mut self, _key: B256) -> Result<Option<(B256, Self::Value)>, DatabaseError> {
54        Ok(None)
55    }
56
57    fn next(&mut self) -> Result<Option<(B256, Self::Value)>, DatabaseError> {
58        Ok(None)
59    }
60}
61
62impl HashedStorageCursor for NoopHashedStorageCursor {
63    fn is_storage_empty(&mut self) -> Result<bool, DatabaseError> {
64        Ok(true)
65    }
66}