revm_context_interface/
local.rs1use core::{
3 cell::{Ref, RefCell},
4 ops::Range,
5};
6use primitives::{Bytes, B256};
7use std::{rc::Rc, vec::Vec};
8
9pub trait LocalContextTr {
11 fn insert_initcodes(&mut self, initcodes: &[Bytes]);
13 fn get_validated_initcode(&mut self, hash: B256) -> Option<Bytes>;
16 fn shared_memory_buffer(&self) -> &Rc<RefCell<Vec<u8>>>;
18 fn shared_memory_buffer_slice(&self, range: Range<usize>) -> Option<Ref<'_, [u8]>> {
20 let buffer = self.shared_memory_buffer();
21 buffer.borrow().get(range.clone())?;
22 Some(Ref::map(buffer.borrow(), |b| {
23 b.get(range).unwrap_or_default()
24 }))
25 }
26 fn clear(&mut self);
28}