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(())
}