ShellBuilder

Struct ShellBuilder 

Source
pub struct ShellBuilder<X: GXExt> { /* private fields */ }
Expand description

Builder for Shell.

Implementations§

Source§

impl<X: GXExt> ShellBuilder<X>

Source

pub fn no_init(self, value: bool) -> Self

do not run the users init module

Source

pub fn publish_timeout(self, value: Duration) -> Self

drop subscribers if they don’t consume updates after this timeout

Source

pub fn resolve_timeout(self, value: Duration) -> Self

module resolution from netidx will fail if it can’t subscribe before this time elapses

Source

pub fn module_resolvers(self, value: Vec<ModuleResolver>) -> Self

define module resolvers to append to the default list

Source

pub fn stdlib_modules(self, value: BitFlags<Module>) -> Self

enable or disable features of the standard library

Source

pub fn mode(self, value: Mode) -> Self

set the shell’s mode

Source

pub fn publisher(self, value: Publisher) -> Self

The netidx publisher to use. If you do not wish to use netidx you can use netidx::InternalOnly to create an internal netidx environment

Source

pub fn subscriber(self, value: Subscriber) -> Self

The netidx subscriber to use. If you do not wish to use netidx you can use netidx::InternalOnly to create an internal netidx environment

Source

pub fn register( self, value: Arc<dyn Fn(&mut ExecCtx<GXRt<X>, X::UserEvent>) -> ArcStr>, ) -> Self

Provide a closure to register any built-ins you wish to use.

Your closure should register the builtins with the context and return a string specifiying any modules you need to load in order to use them. For example if you wish to implement a module called m containing builtins foo and bar, then you would first implement foo and bar in rust and register them with the context. You would add a VFS module resolver to the set of resolvers containing prototypes that reference your rust builtins. e.g.

pub let foo = |x, y| 'foo_builtin;
pub let bar = |x| 'bar_builtin

Your VFS resolver would map “/m” -> the above stubs. Your register function would then return “mod m\n” to force loading the module at startup. Then your user only needs to use m

Source

pub fn build(self) -> Result<Shell<X>, ShellBuilderError>

Builds a new Shell.

§Errors

If a required field has not been initialized.

Trait Implementations§

Source§

impl<X: GXExt> Default for ShellBuilder<X>

Source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<X> Freeze for ShellBuilder<X>

§

impl<X> !RefUnwindSafe for ShellBuilder<X>

§

impl<X> !Send for ShellBuilder<X>

§

impl<X> !Sync for ShellBuilder<X>

§

impl<X> !Unpin for ShellBuilder<X>

§

impl<X> !UnwindSafe for ShellBuilder<X>

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.
Source§

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

Source§

fn vzip(self) -> V