pub struct HostState {Show 21 fields
pub console: Arc<Mutex<Vec<ConsoleEntry>>>,
pub canvas: Arc<Mutex<CanvasState>>,
pub storage: Arc<Mutex<HashMap<String, String>>>,
pub timers: Arc<Mutex<Vec<TimerEntry>>>,
pub timer_next_id: Arc<Mutex<u32>>,
pub clipboard: Arc<Mutex<String>>,
pub clipboard_allowed: Arc<Mutex<bool>>,
pub kv_db: Option<Arc<Db>>,
pub memory: Option<Memory>,
pub module_loader: Option<Arc<ModuleLoader>>,
pub navigation: Arc<Mutex<NavigationStack>>,
pub hyperlinks: Arc<Mutex<Vec<Hyperlink>>>,
pub pending_navigation: Arc<Mutex<Option<String>>>,
pub current_url: Arc<Mutex<String>>,
pub input_state: Arc<Mutex<InputState>>,
pub widget_commands: Arc<Mutex<Vec<WidgetCommand>>>,
pub widget_states: Arc<Mutex<HashMap<u32, WidgetValue>>>,
pub widget_clicked: Arc<Mutex<HashSet<u32>>>,
pub canvas_offset: Arc<Mutex<(f32, f32)>>,
pub bookmark_store: SharedBookmarkStore,
pub audio: Arc<Mutex<Option<AudioEngine>>>,
}Expand description
All shared state between the browser host and a guest Wasm module (and dynamically loaded children).
Most fields are behind Arc and Mutex so the same state can be shared across
threads and nested module loads. Host code sets fields like HostState::memory and
HostState::current_url before or during execution; guest imports mutate the rest
through the registered oxide functions.
Fields§
§console: Arc<Mutex<Vec<ConsoleEntry>>>Console log lines shown in the host UI, appended by console_log and api_* helpers.
canvas: Arc<Mutex<CanvasState>>Raster canvas: queued draw commands and decoded images for the current frame.
storage: Arc<Mutex<HashMap<String, String>>>In-memory key/value session storage (string keys and values), similar to localStorage in scope.
timers: Arc<Mutex<Vec<TimerEntry>>>Pending one-shot and interval timers; the host drains these and invokes on_timer on the guest.
timer_next_id: Arc<Mutex<u32>>Monotonic counter used to assign unique TimerEntry::id values for api_set_timeout / api_set_interval.
clipboard: Arc<Mutex<String>>Last text written to or read from the clipboard via the guest API (when permitted).
clipboard_allowed: Arc<Mutex<bool>>When false, api_clipboard_read / api_clipboard_write are blocked and log a warning.
kv_db: Option<Arc<Db>>Optional embedded [sled] database for persistent per-origin key/value bytes (api_kv_store_*).
memory: Option<Memory>The guest’s exported linear memory, used to read/write pointers passed to host imports.
module_loader: Option<Arc<ModuleLoader>>Engine and limits used by api_load_module to fetch and instantiate child Wasm modules.
Session history stack for api_push_state, api_replace_state, and back/forward navigation.
hyperlinks: Arc<Mutex<Vec<Hyperlink>>>Hit-test regions registered by the guest for link clicks in the canvas area.
Set by guest api_navigate — consumed by the UI after module returns.
current_url: Arc<Mutex<String>>The URL of the currently loaded module (set by the host before execution).
input_state: Arc<Mutex<InputState>>Input state polled by the guest each frame.
widget_commands: Arc<Mutex<Vec<WidgetCommand>>>Widget commands issued by the guest during on_frame.
widget_states: Arc<Mutex<HashMap<u32, WidgetValue>>>Persistent widget values (checkbox, slider, text input state).
widget_clicked: Arc<Mutex<HashSet<u32>>>Button IDs that were clicked during the last render pass.
canvas_offset: Arc<Mutex<(f32, f32)>>Top-left corner of the canvas panel in egui screen coords.
bookmark_store: SharedBookmarkStorePersistent bookmark storage shared across tabs.
audio: Arc<Mutex<Option<AudioEngine>>>Audio playback engine (lazily initialised on first audio API call).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for HostState
impl !RefUnwindSafe for HostState
impl Send for HostState
impl Sync for HostState
impl Unpin for HostState
impl UnsafeUnpin for HostState
impl !UnwindSafe for HostState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more