reth_trie/hashed_cursor/
noop.rs

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