Example: Rust Simple

This shows a simple example of compiling Rust to WASM and then to the JVM.

The root build script actually has the build commands to build it. But basically it runs cargo build --release on this directory which compiles add_one from lib.rs into target/wasm32-unknown-unknown/release/rust_simple.wasm. Then the build script takes that wasm file and compiles it to asmble.generated.RustSimple in build/wasm-classes. The class is used by Main.java. It is instantiated with a set of memory and then add_one is invoked with 25 to return 26.

To run it yourself, you need the Gradle wrapper installed (see the root README's "Building and Testing" section, namely gradle wrapper in the root w/ latest Gradle) and the latest Rust nightly (i.e. rustup default nightly and rustup update) with the wasm32-unknown-unknown target installed (i.e. rustup target add wasm32-unknown-unknown --toolchain nightly). Then run the following from the root asmble dir:

gradlew --no-daemon :examples:rust-simple:run

Yes, this does include Rust's std lib, but it's not that big of a deal (I'm keeping it around because in other examples as part of issue #9 I'll need it). The actual method executed for add_one looks like this decompiled:

    private int $func0(final int n) {
        return n + 1;
    }