MCPcopy Index your code
hub / github.com/explodingcamera/tinywasm / main

Function main

examples/wasm-rust.rs:22–71  ·  view source on GitHub ↗

Examples of using WebAssembly compiled from Rust with tinywasm. These examples are meant to be run with `cargo run --example wasm-rust `. For example, `cargo run --example wasm-rust hello`. To run these, you first need to compile the Rust examples to WebAssembly: ```sh ./examples/rust/build.sh ``` This requires the `wasm32-unknown-unknown` target, `binaryen`, and `wabt` to be installe

()

Source from the content-addressed store, hash-verified

20/// <https://github.com/WebAssembly/wabt>
21/// <https://github.com/WebAssembly/binaryen>
22fn main() -> Result<()> {
23 pretty_env_logger::init();
24
25 if !std::path::Path::new("./examples/rust/out/").exists() {
26 return Err(eyre!("No WebAssembly files found. See examples/wasm-rust.rs for instructions."));
27 }
28
29 let args = std::env::args().collect::<Vec<_>>();
30 if args.len() < 2 {
31 println!("Usage: cargo run --example wasm-rust <rust_example>");
32 println!("Available examples:");
33 println!(" hello");
34 println!(" printi32");
35 println!(" host_fn");
36 println!(" fibonacci - calculate fibonacci(30)");
37 println!(" tinywasm - run printi32 inside of tinywasm inside of itself");
38 println!(" argon2id - run argon2id(1000, 2, 1)");
39 return Ok(());
40 }
41
42 match args[1].as_str() {
43 "hello" => hello()?,
44 "printi32" => printi32()?,
45 "fibonacci" => fibonacci()?,
46 "tinywasm" => tinywasm()?,
47 "tinywasm_no_std" => tinywasm_no_std()?,
48 "argon2id" => argon2id()?,
49 "host_fn" => host_fn()?,
50 "all" => {
51 println!("Running all examples");
52 println!("\nhello.wasm:");
53 hello()?;
54 println!("\nprinti32.wasm:");
55 printi32()?;
56 println!("\nfibonacci.wasm:");
57 fibonacci()?;
58 println!("\ntinywasm.wasm:");
59 tinywasm()?;
60 println!("\ntinywasm_no_std.wasm:");
61 tinywasm_no_std()?;
62 println!("argon2id.wasm:");
63 argon2id()?;
64 println!("\nhost_fn.wasm:");
65 host_fn()?;
66 }
67 _ => {}
68 }
69
70 Ok(())
71}
72
73fn tinywasm() -> Result<()> {
74 let module = tinywasm::parse_file("./examples/rust/out/tinywasm.opt.wasm")?;

Callers

nothing calls this directly

Calls 8

printi32Function · 0.85
tinywasmFunction · 0.85
tinywasm_no_stdFunction · 0.85
host_fnFunction · 0.85
helloFunction · 0.70
fibonacciFunction · 0.70
argon2idFunction · 0.70
lenMethod · 0.45

Tested by

no test coverage detected