Rust與JavaScript語言可以通過WebAssembly實現交互。WebAssembly是一種面向Web平臺的二進制指令集格式,可以在任何支持WebAssembly的環境中運行,比如瀏覽器。
下面是使用Rust和JavaScript進行交互的基本步驟:
以下是一個簡單的示例:
Rust代碼(hello.rs):
#[no_mangle]
pub extern "C" fn add(a: i32, b: i32) -> i32 {
a + b
}
將Rust代碼編譯為WebAssembly模塊:
$ rustc --target wasm32-unknown-unknown -O hello.rs
JavaScript代碼(index.js):
fetch('hello.wasm')
.then(response => response.arrayBuffer())
.then(bytes => WebAssembly.compile(bytes))
.then(module => {
return WebAssembly.instantiate(module, {
env: {
memoryBase: 0,
tableBase: 0,
memory: new WebAssembly.Memory({ initial: 256 }),
table: new WebAssembly.Table({ initial: 0, element: 'anyfunc' })
}
});
})
.then(instance => {
const add = instance.exports.add;
console.log(add(3, 4)); // should print 7
});
在瀏覽器中加載JavaScript代碼:
<!DOCTYPE html>
<html>
<head>
<title>WebAssembly Example</title>
</head>
<body>
<script src="index.js"></script>
</body>
</html>
在這個示例中,我們定義了一個在Rust中實現的函數add
,然后編譯為WebAssembly模塊,并在JavaScript中加載并調用該函數。通過這種方式,我們可以實現Rust和JavaScript之間的交互。