use crate::hardware_bridge::HardwareBridge; use prometeu_abi::virtual_machine::VmFault; pub struct HostContext<'a> { pub hw: Option<&'a mut dyn HardwareBridge>, } impl<'a> HostContext<'a> { pub fn new(hw: Option<&'a mut dyn HardwareBridge>) -> Self { Self { hw } } #[inline] pub fn require_hw(&mut self) -> Result<&mut dyn HardwareBridge, VmFault> { match &mut self.hw { Some(hw) => Ok(*hw), None => Err(VmFault::Unavailable), } } } pub trait HostContextProvider { fn make_ctx(&'_ mut self) -> HostContext<'_>; }