reth_trie/trie_cursor/
noop.rs

1use super::{TrieCursor, TrieCursorFactory};
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
65/// Noop storage trie cursor.
66#[derive(Default, Debug)]
67#[non_exhaustive]
68pub struct NoopStorageTrieCursor;
69
70impl TrieCursor for NoopStorageTrieCursor {
71    fn seek_exact(
72        &mut self,
73        _key: Nibbles,
74    ) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
75        Ok(None)
76    }
77
78    fn seek(
79        &mut self,
80        _key: Nibbles,
81    ) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
82        Ok(None)
83    }
84
85    fn next(&mut self) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
86        Ok(None)
87    }
88
89    fn current(&mut self) -> Result<Option<Nibbles>, DatabaseError> {
90        Ok(None)
91    }
92}