W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
支持?jǐn)U展類(lèi)型: rs
Rust是一個(gè)由 Mozilla 開(kāi)發(fā)的系統(tǒng)級(jí)編程語(yǔ)言,在一些內(nèi)存和安全線程方面擁有近原生的性能。Rust 最近支持了編譯成 WebAssembly,而現(xiàn)在 Parcel 讓它超級(jí)簡(jiǎn)單零配置地開(kāi)始使用。
只需要像其他資源那樣導(dǎo)入.rs文件,假設(shè)你已經(jīng)安裝了Rustup,Parcel 會(huì)自動(dòng)安裝正確的工具鏈(toolchain),目標(biāo)文件(target),和其他的編譯時(shí)必備的依賴(lài)。在Cargo的幫助下,不但能直接拿到 Rust 源文件,而且可以自動(dòng)追蹤文件依賴(lài),在保存的時(shí)候會(huì)重新構(gòu)建。
如同.wasm文件,.rs文件可以被異步或同步導(dǎo)入。
// 同步導(dǎo)入
import { add } from './add.rs'
console.log(add(2, 3))
// 異步導(dǎo)入
const { add } = await import('./add.rs')
console.log(add(2, 3))
在 Rust 側(cè),你只需要確保函數(shù)名不是 mangled 而且函數(shù)是 public 的即可。
#[no_mangle]
pub fn add(a: i32, b: i32) -> i32 {
return a + b
}
你也可以通過(guò)導(dǎo)入src/lib.rs或src/main.rs來(lái)導(dǎo)入rust項(xiàng)目。此時(shí),Parcel會(huì)調(diào)用cargo而不是rustc進(jìn)行編譯。
import { sub } from './sub/src/lib.rs'
console.log(sub(2, 3))
在./sub/Cargo.toml中:
[package]
...
[lib]
crate-type = ["cdylib"]
[dependencies]
wasm-bindgen = "0.2"
在./sub/src/lib.rs中:
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub fn sub(a: i32, b: i32) -> i32 {
a - b
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: