WebAssembly - การทำงานกับ Rust

ในการรับโค้ดคอมไพล์ RUST เราจะใช้เครื่องมือ WebAssembly.studio

ไปที่WebAssembly.studioซึ่งมีอยู่ที่ Go tohttps://webassembly.studio/ และจะแสดงหน้าจอดังที่แสดงด้านล่าง -

คลิกที่ Empty Rust Project เมื่อเสร็จแล้วคุณจะได้รับสามไฟล์ใน src / โฟลเดอร์ -

เปิดไฟล์ main.rs และเปลี่ยนรหัสที่คุณต้องการ

ฉันกำลังเพิ่มฟังก์ชั่นต่อไปนี้ซึ่งจะเพิ่มตัวเลขที่กำหนดสองตัว -

fn add_ints(lhs: i32, rhs: i32) -> i32 {
   lhs+rhs
}

รหัสที่มีอยู่ใน main.rs มีดังนี้ -

#[no_mangle]
pub extern "C" fn add_one(x: i32) -> i32 {
   x + 1
}

แทนที่ fn add_one ด้วยของคุณดังที่แสดงด้านล่าง -

#[no_mangle]
pub extern "C" fn add_ints(lhs: i32, rhs: i32) -> i32 {
   lhs+rhs
}

ใน main.js เปลี่ยนชื่อฟังก์ชันจาก add_one เป็น add_ints

fetch('../out/main.wasm').then(
   response =>
   response.arrayBuffer()
).then(bytes => WebAssembly.instantiate(bytes)).then(results => {
   instance = results.instance;
   document.getElementById("container").textContent = instance.exports.add_one(41);
}).catch(console.error);

แทนที่ instance.exports.add_one เป็น instance.exports.add_ints (100,100)

fetch('../out/main.wasm').then(
   response =>
   response.arrayBuffer()
).then(bytes => WebAssembly.instantiate(bytes)).then(results => {
   instance = results.instance;
   document.getElementById("container").textContent = instance.exports.add_ints(100,100)
}).catch(console.error);

คลิกที่ปุ่มสร้างที่มีอยู่บน UI ของ webassembly.studio เพื่อสร้างโค้ด

เมื่อสร้างเสร็จแล้วให้คลิกที่ปุ่ม Run ที่มีอยู่บน UI เพื่อดูผลลัพธ์ -

เราได้ผลลัพธ์เป็น 200 เมื่อเราส่งผ่าน instance.exports.add_ints (100,100)

ในทำนองเดียวกันคุณสามารถเขียนโปรแกรมที่แตกต่างกันสำหรับสนิมและรวบรวมไว้ใน webassembly.studio