pub struct WasiCtxBuilder { /* private fields */ }

Implementations§

source§

impl WasiCtxBuilder

source

pub fn new() -> Self

Creates a builder for a new context with default parameters set.

The current defaults are:

  • stdin is closed
  • stdout and stderr eat all input but it doesn’t go anywhere
  • no env vars
  • no arguments
  • no preopens
  • clocks use the host implementation of wall/monotonic clocks
  • RNGs are all initialized with random state and suitable generator quality to satisfy the requirements of WASI APIs.

These defaults can all be updated via the various builder configuration methods below.

Note that each builder can only be used once to produce a WasiCtx. Invoking the build method will panic on the second attempt.

source

pub fn stdin(&mut self, stdin: impl StdinStream + 'static) -> &mut Self

source

pub fn stdout(&mut self, stdout: impl StdoutStream + 'static) -> &mut Self

source

pub fn stderr(&mut self, stderr: impl StdoutStream + 'static) -> &mut Self

source

pub fn inherit_stdin(&mut self) -> &mut Self

source

pub fn inherit_stdout(&mut self) -> &mut Self

source

pub fn inherit_stderr(&mut self) -> &mut Self

source

pub fn inherit_stdio(&mut self) -> &mut Self

source

pub fn envs(&mut self, env: &[(impl AsRef<str>, impl AsRef<str>)]) -> &mut Self

source

pub fn env(&mut self, k: impl AsRef<str>, v: impl AsRef<str>) -> &mut Self

source

pub fn args(&mut self, args: &[impl AsRef<str>]) -> &mut Self

source

pub fn arg(&mut self, arg: impl AsRef<str>) -> &mut Self

source

pub fn preopened_dir( &mut self, dir: Dir, perms: DirPerms, file_perms: FilePerms, path: impl AsRef<str> ) -> &mut Self

source

pub fn secure_random( &mut self, random: impl RngCore + Send + Sync + 'static ) -> &mut Self

Set the generator for the secure random number generator to the custom generator specified.

Note that contexts have a default RNG configured which is a suitable generator for WASI and is configured with a random seed per-context.

Guest code may rely on this random number generator to produce fresh unpredictable random data in order to maintain its security invariants, and ideally should use the insecure random API otherwise, so using any prerecorded or otherwise predictable data may compromise security.

source

pub fn insecure_random( &mut self, insecure_random: impl RngCore + Send + Sync + 'static ) -> &mut Self

source

pub fn insecure_random_seed(&mut self, insecure_random_seed: u128) -> &mut Self

source

pub fn wall_clock(&mut self, clock: impl HostWallClock + 'static) -> &mut Self

source

pub fn monotonic_clock( &mut self, clock: impl HostMonotonicClock + 'static ) -> &mut Self

source

pub fn inherit_network( &mut self, ambient_authority: AmbientAuthority ) -> &mut Self

Add all network addresses accessable to the host to the pool.

source

pub fn insert_addr<A: ToSocketAddrs>(&mut self, addrs: A) -> Result<&mut Self>

Add network addresses to the pool.

source

pub fn insert_socket_addr(&mut self, addr: SocketAddr) -> &mut Self

Add a specific cap_std::net::SocketAddr to the pool.

source

pub fn insert_ip_net_port_any(&mut self, ip_net: IpNet) -> &mut Self

Add a range of network addresses, accepting any port, to the pool.

Unlike insert_ip_net, this function grants access to any requested port.

source

pub fn insert_ip_net_port_range( &mut self, ip_net: IpNet, ports_start: u16, ports_end: Option<u16> ) -> &mut Self

Add a range of network addresses, accepting a range of ports, to per-instance networks.

This grants access to the port range starting at ports_start and, if ports_end is provided, ending before ports_end.

source

pub fn insert_ip_net(&mut self, ip_net: IpNet, port: u16) -> &mut Self

Add a range of network addresses with a specific port to the pool.

source

pub fn allow_ip_name_lookup(&mut self, enable: bool) -> &mut Self

Allow usage of wasi:sockets/ip-name-lookup

source

pub fn build(&mut self) -> WasiCtx

Uses the configured context so far to construct the final WasiCtx.

This will insert resources into the provided table.

Note that each WasiCtxBuilder can only be used to “build” once, and calling this method twice will panic.

Panics

Panics if this method is called twice.

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

source§

fn get_fd_flags(&self) -> Result<FdFlags, Error>
where T: AsFilelike,

Query the “status” flags for the self file descriptor.
source§

fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>
where T: AsFilelike,

Create a new SetFdFlags value for use with set_fd_flags. Read more
source§

fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>
where T: AsFilelike,

Set the “status” flags for the self file descriptor. Read more
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> Pointee for T

§

type Pointer = u32

source§

fn debug( pointer: <T as Pointee>::Pointer, f: &mut Formatter<'_> ) -> Result<(), Error>

source§

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

§

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

§

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

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