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

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 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<Args: ParameterTuple, Output: SupportedReturnType>( &mut self, name: impl AsRef<str>, host_func: impl Into<HostFunction<Output, Args>>, ) -> Result<()>

Registers a host function that the guest can call.

Source

pub fn register_with_extra_allowed_syscalls<Args: ParameterTuple, Output: SupportedReturnType>( &mut self, name: impl AsRef<str>, host_func: impl Into<HostFunction<Output, Args>>, extra_allowed_syscalls: impl IntoIterator<Item = ExtraAllowedSyscall>, ) -> Result<()>

Registers a host function with additional allowed syscalls during execution.

Unlike register, this variant allows specifying extra syscalls that will be permitted when the function handler runs.

Source

pub fn register_print( &mut self, print_func: impl Into<HostFunction<i32, (String,)>>, ) -> Result<()>

Registers the special “HostPrint” function for guest printing.

This overrides the default behavior of writing to stdout. The function expects the signature FnMut(String) -> i32 and will be called when the guest wants to print output.

Source

pub fn register_print_with_extra_allowed_syscalls( &mut self, print_func: impl Into<HostFunction<i32, (String,)>>, extra_allowed_syscalls: impl IntoIterator<Item = ExtraAllowedSyscall>, ) -> Result<()>

Registers the “HostPrint” function with additional allowed syscalls.

Like register_print, but allows specifying extra syscalls that will be permitted during function execution.

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<Args: ParameterTuple, Output: SupportedReturnType>( &mut self, name: &str, hf: impl Into<HostFunction<Output, Args>>, ) -> Result<()>

Register a primitive host function
Source§

fn register_host_function_with_syscalls<Args: ParameterTuple, Output: SupportedReturnType>( &mut self, name: &str, hf: impl Into<HostFunction<Output, Args>>, eas: Vec<ExtraAllowedSyscall>, ) -> Result<()>

Register a primitive host function whose worker thread has extra permissive seccomp filters installed

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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