summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rwxr-xr-xexamples/rust/build.sh4
-rw-r--r--examples/rust/src/fibonacci.rs8
2 files changed, 11 insertions, 1 deletions
diff --git a/examples/rust/build.sh b/examples/rust/build.sh
index 5450345..cabf00e 100755
--- a/examples/rust/build.sh
+++ b/examples/rust/build.sh
@@ -6,11 +6,13 @@ exclude_wat=("tinywasm")
out_dir="./target/wasm32-unknown-unknown/wasm"
dest_dir="out"
+features="+reference-types,+bulk-memory,+mutable-globals"
+
# ensure out dir exists
mkdir -p "$dest_dir"
for bin in "${bins[@]}"; do
- RUSTFLAGS="-C target-feature=+reference-types,+bulk-memory -C panic=abort" cargo build --target wasm32-unknown-unknown --package rust-wasm-examples --profile=wasm --bin "$bin"
+ RUSTFLAGS="-C target-feature=$features -C panic=abort" cargo build --target wasm32-unknown-unknown --package rust-wasm-examples --profile=wasm --bin "$bin"
cp "$out_dir/$bin.wasm" "$dest_dir/"
wasm-opt "$dest_dir/$bin.wasm" -o "$dest_dir/$bin.wasm" -O --intrinsic-lowering -O
diff --git a/examples/rust/src/fibonacci.rs b/examples/rust/src/fibonacci.rs
index 3e4be73..7924aef 100644
--- a/examples/rust/src/fibonacci.rs
+++ b/examples/rust/src/fibonacci.rs
@@ -19,3 +19,11 @@ pub extern "C" fn fibonacci(n: i32) -> i32 {
}
sum
}
+
+#[no_mangle]
+pub extern "C" fn fibonacci_recursive(n: i32) -> i32 {
+ if n <= 1 {
+ return n;
+ }
+ fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)
+}