溫馨提示×

wasm rust 能怎樣運行

小樊
128
2024-12-01 02:04:02
欄目: 編程語言

WebAssembly (WASM) 是一種用于現代Web瀏覽器的二進制指令格式。Rust 是一種系統編程語言,可以編譯成 WASM 以在Web上運行。要在Web瀏覽器中運行 Rust 編譯的 WASM 代碼,請按照以下步驟操作:

  1. 安裝 Rust 工具鏈:首先,確保已安裝 Rust。這將安裝 cargo(Rust 的包管理器和構建系統)和 rustc(Rust 編譯器)。

  2. 創建一個新的 Rust 項目:使用 cargo new wasm_example 命令創建一個新的 Rust 項目。這將生成一個包含基本代碼結構的項目。

  3. 進入項目目錄:使用 cd wasm_example 命令進入項目目錄。

  4. 添加 WebAssembly 目標:在項目根目錄下創建一個名為 Cargo.toml 的文件(如果尚未存在),并添加以下內容:

    [package]
    name = "wasm_example"
    version = "0.1.0"
    authors = ["Your Name <your.email@example.com>"]
    edition = "2018"
    
    [lib]
    crate-type = ["cdylib"]
    
    [dependencies]
    wasm-bindgen = "0.2"
    

    這將添加 wasm-bindgen 庫,用于在 Rust 和 JavaScript 之間進行交互。

  5. 編寫 Rust 代碼:在 src/lib.rs 文件中編寫以下代碼:

    use wasm_bindgen::prelude::*;
    
    #[wasm_bindgen]
    pub fn add(a: i32, b: i32) -> i32 {
        a + b
    }
    

    這段代碼定義了一個名為 add 的函數,該函數接受兩個整數參數并返回它們的和。使用 #[wasm_bindgen] 屬性將該函數暴露給 JavaScript。

  6. 構建 WASM 代碼:在項目根目錄下運行 cargo build --target wasm32-unknown-unknown --release 命令。這將生成一個名為 pkg/wasm_example.wasm 的 WASM 文件。

  7. 創建一個 HTML 文件:創建一個名為 index.html 的文件,并添加以下內容:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>WASM Example</title>
    </head>
    <body>
        <script type="module">
            import init, { add } from './pkg/wasm_example.js';
    
            async function run() {
                await init();
                const result = add(1, 2);
                console.log('Result:', result);
            }
    
            run();
        </script>
    </body>
    </html>
    

    這個 HTML 文件包含一個名為 init 的函數,用于加載 WASM 模塊。它還調用 add 函數并將結果輸出到控制臺。

  8. 使用一個簡單的 Web 服務器運行:為了在本地運行此示例,可以使用一個簡單的 Web 服務器。在項目根目錄下運行 python -m http.server(如果已安裝 Python)或 npm install -g serve(如果已安裝 Node.js 和 npm)。

  9. 在瀏覽器中打開 HTML 文件:在瀏覽器中打開 http://localhost:8000,你應該看到控制臺中輸出的結果(在這種情況下為 “Result: 3”)。

這就是使用 Rust 和 WebAssembly 在瀏覽器中運行代碼的基本過程。你可以根據需要擴展此示例,以創建更復雜的應用程序。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女