summaryrefslogtreecommitdiff
path: root/examples/wasm-rust.rs
blob: 21d3eb873ecb5623e6eee24175072b3cee6cf9d7 (plain)
use color_eyre::eyre::Result;
use tinywasm::{Extern, FuncContext, Imports, Module, Store};

fn main() -> Result<()> {
    let args = std::env::args().collect::<Vec<_>>();
    if args.len() < 2 {
        println!("Usage: cargo run --example wasm-rust <rust_example>");
        println!("Available examples:");
        println!("  hello");
        return Ok(());
    }

    match args[1].as_str() {
        "hello" => hello()?,
        _ => {}
    }

    Ok(())
}

fn hello() -> Result<()> {
    // const HELLO_WASM: &[u8] = include_bytes!("./rust/out/hello.wasm");
    // let module = Module::parse_bytes(&HELLO_WASM)?;
    // let mut store = Store::default();

    // let mut imports = Imports::new();
    // imports.define(
    //     "env",
    //     "printi32",
    //     Extern::typed_func(|_: FuncContext<'_>, x: i32| {
    //         println!("{}", x);
    //         Ok(())
    //     }),
    // )?;

    // let instance = module.instantiate(&mut store, Some(imports))?;
    // let add_and_print = instance.typed_func::<(i32, i32), ()>(&mut store, "add_and_print")?;
    // add_and_print.call(&mut store, (1, 2))?;

    Ok(())
}