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 = NoopAccountTrieCursor;
13    type StorageTrieCursor = NoopStorageTrieCursor;
14
15    /// Generates a noop account trie cursor.
16    fn account_trie_cursor(&self) -> Result<Self::AccountTrieCursor, DatabaseError> {
17        Ok(NoopAccountTrieCursor::default())
18    }
19
20    /// Generates a noop storage trie cursor.
21    fn storage_trie_cursor(
22        &self,
23        _hashed_address: B256,
24    ) -> Result<Self::StorageTrieCursor, DatabaseError> {
25        Ok(NoopStorageTrieCursor::default())
26    }
27}
28
29/// Noop account trie cursor.
30#[derive(Default, Debug)]
31#[non_exhaustive]
32pub struct NoopAccountTrieCursor;
33
34impl TrieCursor for NoopAccountTrieCursor {
35    fn seek_exact(
36        &mut self,
37        _key: Nibbles,
38    ) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
39        Ok(None)
40    }
41
42    fn seek(
43        &mut self,
44        _key: Nibbles,
45    ) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
46        Ok(None)
47    }
48
49    fn next(&mut self) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
50        Ok(None)
51    }
52
53    fn current(&mut self) -> Result<Option<Nibbles>, DatabaseError> {
54        Ok(None)
55    }
56}
57
58/// Noop storage trie cursor.
59#[derive(Default, Debug)]
60#[non_exhaustive]
61pub struct NoopStorageTrieCursor;
62
63impl TrieCursor for NoopStorageTrieCursor {
64    fn seek_exact(
65        &mut self,
66        _key: Nibbles,
67    ) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
68        Ok(None)
69    }
70
71    fn seek(
72        &mut self,
73        _key: Nibbles,
74    ) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
75        Ok(None)
76    }
77
78    fn next(&mut self) -> Result<Option<(Nibbles, BranchNodeCompact)>, DatabaseError> {
79        Ok(None)
80    }
81
82    fn current(&mut self) -> Result<Option<Nibbles>, DatabaseError> {
83        Ok(None)
84    }
85}