Trait sandkiste::HasModules

source ·
pub trait HasModules<'a> {
    type Module<'b>: Module<'a, 'b, Machine = Self>
       where Self: 'b;

    // Required method
    fn module<'b>(
        &'b self,
        name: &str
    ) -> Result<Self::Module<'b>, MachineError>;
}
Expand description

Ability to load language-independent modules into a Machine

Example

use sandkiste::prelude::*;

fn load_my_module<'a, 'b, M>(machine: &'b M) -> Result<(), MachineError>
where
    M: Machine<'a> + HasModules<'a> + Callback<'a>,
    for<'c> M::Datum<'b, 'c>: MaybeFloat,
{
    let mymod = machine.module("mymod")?;
    mymod.set("pi_approx", 3.14.into())?;
    mymod.set("double", machine.callback_1arg(|x| {
        Ok([(x.try_as_f64()? * 2.0).into()])
    })?)?;
    Ok(())
}

Required Associated Types§

source

type Module<'b>: Module<'a, 'b, Machine = Self> where Self: 'b

Type of modules and sub-modules

Required Methods§

source

fn module<'b>(&'b self, name: &str) -> Result<Self::Module<'b>, MachineError>

Open a module (create if non-existent)

Implementors§