[][src]Trait endbasic_core::exec::BuiltinCommand

pub trait BuiltinCommand {
    pub fn metadata(&self) -> &CallableMetadata;
#[must_use] pub fn exec<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        args: &'life1 [(Option<Expr>, ArgSep)],
        machine: &'life2 mut Machine
    ) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>
    where
        'life0: 'async_trait,
        'life1: 'async_trait,
        'life2: 'async_trait,
        Self: 'async_trait
; }

A trait to define a command that is executed by a Machine.

The commands themselves are immutable but they can reference mutable state. Given that EndBASIC is not threaded, it is sufficient for those references to be behind a RefCell and/or an Rc.

Idiomatically, these objects need to provide a new() method that returns an Rc<Callable>, as that's the type used throughout the execution engine.

Required methods

pub fn metadata(&self) -> &CallableMetadata[src]

Returns the metadata for this command.

The return value takes the form of a reference to force the callable to store the metadata as a struct field so that calls to this function are guaranteed to be cheap.

#[must_use]pub fn exec<'life0, 'life1, 'life2, 'async_trait>(
    &'life0 self,
    args: &'life1 [(Option<Expr>, ArgSep)],
    machine: &'life2 mut Machine
) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>> where
    'life0: 'async_trait,
    'life1: 'async_trait,
    'life2: 'async_trait,
    Self: 'async_trait, 
[src]

Executes the command.

args contains the arguments as provided in the invocation of the command. Each entry in this array contains an optional expression (to support things like PRINT a, , b) and the separator that was used between that argument and the next. The last entry in args always has ArgSep::End as the separator.

machine provides mutable access to the current state of the machine invoking the command.

Commands cannot return any value except for errors.

Loading content...

Implementors

impl BuiltinCommand for ClsCommand[src]

impl BuiltinCommand for ColorCommand[src]

impl BuiltinCommand for InputCommand[src]

impl BuiltinCommand for LocateCommand[src]

impl BuiltinCommand for PrintCommand[src]

impl BuiltinCommand for ClearCommand[src]

impl BuiltinCommand for HelpCommand[src]

impl BuiltinCommand for RandomizeCommand[src]

impl BuiltinCommand for ExitCommand[src]

Loading content...