Skip to main content

UninitializedSandbox

Struct UninitializedSandbox 

Source
pub struct UninitializedSandbox { /* private fields */ }
Expand description

A preliminary sandbox that represents allocated memory and registered host functions, but has not yet created the underlying virtual machine.

This struct holds the configuration and setup needed for a sandbox without actually creating the VM. It allows you to:

  • Set up memory layout and load guest binary data
  • Register host functions that will be available to the guest
  • Configure sandbox settings before VM creation

The virtual machine is not created until you call evolve to transform this into an initialized MultiUseSandbox.

Implementations§

Source§

impl UninitializedSandbox

Source

pub fn new<'a, 'b>( env: impl Into<GuestEnvironment<'a, 'b>>, cfg: Option<SandboxConfiguration>, ) -> Result<Self>

Creates a new uninitialized sandbox for the given guest environment.

The guest binary can be provided as either a file path or memory buffer. An optional configuration can customize memory sizes and sandbox settings. After creation, register host functions using register before calling evolve to complete initialization and create the VM.

Source

pub fn evolve(self) -> Result<MultiUseSandbox>

Creates and initializes the virtual machine, transforming this into a ready-to-use sandbox.

This method consumes the UninitializedSandbox and performs the final initialization steps to create the underlying virtual machine. Once evolved, the resulting MultiUseSandbox can execute guest code and handle function calls.

Source

pub fn shared_mem_size(&self) -> usize

Returns the total size of the sandbox shared memory region in bytes.

This is useful for placing file mappings at guest physical addresses that don’t overlap the primary shared memory slot.

Source

pub fn set_max_guest_log_level(&mut self, log_level: LevelFilter)

Sets the maximum log level for guest code execution.

If not set, the log level is determined by the RUST_LOG environment variable, defaulting to LevelFilter::Error if unset.

Source

pub fn register(&mut self, fn_id: u32, host_func: HostFn) -> Result<()>

Registers a host function under fn_id that the guest can call via the OutBAction::CallFunction outb port. The closure receives the raw Request.payload bytes from the guest and returns the raw response payload bytes.

Trait Implementations§

Source§

impl Debug for UninitializedSandbox

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Registerable for UninitializedSandbox

Source§

fn register_host_function(&mut self, fn_id: u32, func: HostFn) -> Result<()>

Register func to be invoked by the guest under the given fn_id. Overwrites any prior entry for that id.

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
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

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.

§

impl<T> LayoutRaw for T

§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
§

impl<T> Pointee for T

§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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<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