reth_trie/trie_cursor/
noop.rs

1use super::{TrieCursor, TrieCursorFactory, TrieStorageCursor};
2use crate::{BranchNodeCompact, Nibbles};
3use alloy_primitives::B256;
4use reth_storage_errors::db::DatabaseError;
5
6/// Noop trie cursor factory.
7#[derive(Clone, Default, Debug)]
8#[non_exhaustive]
9pub struct NoopTrieCursorFactory;
10
11impl TrieCursorFactory for NoopTrieCursorFactory {
12    type AccountTrieCursor<'a>
13        = NoopAccountTrieCursor
14    where
15        Self: 'a;
16
17    type StorageTrieCursor<'a>
18        = NoopStorageTrieCursor
19    where
20        Self: 'a;
21
22    /// Generates a noop account trie cursor.
23    fn account_trie_cursor(&self) -> Result<Self::AccountTrieCursor<'_>, DatabaseError> {
24        Ok(NoopAccountTrieCursor::default())
25    }
26
27    /// Generates a noop storage trie cursor.
28    fn storage_trie_cursor(
29        &self,
30        _hashed_address: B256,
31    ) -> Result<Self::StorageTrieCursor<'_>, DatabaseError> {
32        Ok(NoopStorageTrieCursor::default())
33    }
34}
35
36/// Noop account trie cursor.
37#[derive(Default, Debug)]
38#[non_exhaustive]
39pub struct NoopAccountTrieCursor;
40
41impl TrieCursor for NoopAccountTrieCursor {
42    fn seek_exact(
43        &mut self,
44        _key: Nibbles,
45    ) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
46        Ok(None)
47    }
48
49    fn seek(
50        &mut self,
51        _key: Nibbles,
52    ) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
53        Ok(None)
54    }
55
56    fn next(&mut self) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
57        Ok(None)
58    }
59
60    fn current(&mut self) -> Result<Option<Nibbles>, DatabaseError> {
61        Ok(None)
62    }
63
64    fn reset(&mut self) {
65        // Noop
66    }
67}
68
69/// Noop storage trie cursor.
70#[derive(Default, Debug)]
71#[non_exhaustive]
72pub struct NoopStorageTrieCursor;
73
74impl TrieCursor for NoopStorageTrieCursor {
75    fn seek_exact(
76        &mut self,
77        _key: Nibbles,
78    ) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
79        Ok(None)
80    }
81
82    fn seek(
83        &mut self,
84        _key: Nibbles,
85    ) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
86        Ok(None)
87    }
88
89    fn next(&mut self) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
90        Ok(None)
91    }
92
93    fn current(&mut self) -> Result<Option<Nibbles>, DatabaseError> {
94        Ok(None)
95    }
96
97    fn reset(&mut self) {
98        // Noop
99    }
100}
101
102impl TrieStorageCursor for NoopStorageTrieCursor {
103    fn set_hashed_address(&mut self, _hashed_address: B256) {
104        // Noop
105    }
106}