網路

為何選擇 Rust?

羽毛圖示

低資源消耗

與這高生產力和良好的使用體驗的生態系一起,完全掌握資源的運用,並將 CPU 與記憶體的使用降至最低,同時讓編譯器幫助您檢查您做對了沒。

盾牌圖示

安全與可靠

Rust 強大的型別檢查器能預防各種錯誤,確保您了解程式的狀態是如何傳遞與改變,在佈署前就得以找出這些錯誤。

連結著的齒輪圖示

規模化並行

您可以使用任何適合您的並行方式, Rust 會確保您不會意外的在執行緒或任務間共享程式狀態,讓您無所畏懼地的榨乾最後一點效能。

立即開始!

Rust 有個日益茁壯的生態系與易於使用的網站函式庫,這邊有兩個範例:

用 POST 送出一個 JSON

// This will POST a body of
//     `{"lang": "rust", "body": "json"}`
#[derive(Serialize)]
struct Body<'a> {
    lang: &'a str,
    body: &'a str,
}

let client = reqwest::Client::new();
let res = client.post("http://httpbin.org/post")
    .json(&Body {
        lang: "rust",
        body: "json",
    })
    .send()?;
了解更多關於 reqwest

處理 POST 過來的 JSON 資料

#[derive(Deserialize)]
struct Task { name: String, completed: bool }

#[post("/", data = "<task>")]
fn new(task: Json<Task>) -> Flash<Redirect> {
    if task.name.is_empty() {
        Flash::error(Redirect::to("/"),
            "Cannot be empty.")
    } else {
        Flash::success(Redirect::to("/"),
            "Task added.")
    }
}
了解更多關於 Rocket

產品應用

firefox
將我們的 Push 的基礎設施遷移至 Rust 使我們能夠更輕鬆地維護程式碼,注重在正確性上的同時亦能提供出色的性能,處於尖峰時的系統能在一小時間處理高達兩千萬個 websocket 連線。

– Benjamin Bangert, Staff Engineer, Mozilla

Rust 是 Linkerd 專案的基礎,它的型態系統讓我們得以建造模組化、可測試且易於組合的元件,同時不會犧牲執行時的效能。最讓我們訝異的是 Rust 的 lifetime 與 borrow 機制,它讓我們避免了大量的資源洩露問題。在這兩年後,我無法想像要如何使用其它語言來完成這個工作。

– Oliver Gould, CTO, Buoyant

buoyant