Skip to main content

HostState

Struct HostState 

Source
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.

§navigation: Arc<Mutex<NavigationStack>>

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.

§pending_navigation: Arc<Mutex<Option<String>>>

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: SharedBookmarkStore

Persistent bookmark storage shared across tabs.

§audio: Arc<Mutex<Option<AudioEngine>>>

Audio playback engine (lazily initialised on first audio API call).

Trait Implementations§

Source§

impl Clone for HostState

Source§

fn clone(&self) -> HostState

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for HostState

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

§

impl<T> SerializableAny for T
where T: 'static + Any + Clone + for<'a> Send + Sync,