pub trait ExecutionBackend: Send {
// Required methods
fn reset(&mut self, config: &MachineConfig) -> Result<()>;
fn step(&mut self) -> Result<bool>;
fn read_memory(&self, address: u64, buffer: &mut [u8]) -> Result<()>;
fn write_memory(&mut self, address: u64, data: &[u8]) -> Result<()>;
// Provided methods
fn restore_state(&mut self, _state: &SavedState) -> Result<()> { ... }
fn vga_framebuffer_rgb(&self) -> Option<(u32, u32, Vec<u8>)> { ... }
fn inject_text(&mut self, _text: &str) -> Result<usize> { ... }
}Required Methods§
fn reset(&mut self, config: &MachineConfig) -> Result<()>
fn step(&mut self) -> Result<bool>
fn read_memory(&self, address: u64, buffer: &mut [u8]) -> Result<()>
fn write_memory(&mut self, address: u64, data: &[u8]) -> Result<()>
Provided Methods§
Sourcefn restore_state(&mut self, _state: &SavedState) -> Result<()>
fn restore_state(&mut self, _state: &SavedState) -> Result<()>
Restore an attached v86 saved state after reset. Backends that do not support saved states may keep the default no-op implementation.
Sourcefn vga_framebuffer_rgb(&self) -> Option<(u32, u32, Vec<u8>)>
fn vga_framebuffer_rgb(&self) -> Option<(u32, u32, Vec<u8>)>
Return the current guest framebuffer as packed RGB bytes when the backend exposes a graphical VGA mode.
Sourcefn inject_text(&mut self, _text: &str) -> Result<usize>
fn inject_text(&mut self, _text: &str) -> Result<usize>
Queue host text as guest keyboard input when supported by the backend.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".