网络

为何选择 Rust?

A feather

低资源占用

掌控资源使用,以保持内存和 CPU 占用最小化。借助于编译器确保正确性。而且,这一切都可以借助一个高效且易用的生态系统来完成。

A shield

安全可靠

Rust 强大的类型检查器能够避免整类 bug。确保精确地知道状态何时何地被共享和修改。在部署之前就发现潜在的故障点。

Connected gears

规模化并发

使用任何适合你的并发方法组合。Rust 会确保你不会在线程或任务之间意外共享状态。它让你无畏地压榨出每一丝扩展性。

开始吧!

Rust 拥有一个不断壮大的、易于使用的 Web 库生态系统。这里有两个例子:

发送 JSON 的 POST 请求

// 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 的信息

处理 JSON 的 POST 请求

#[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 为我们带来了一个更易于维护的代码库,并且在确保正确性的同时,提供了出色的性能。现在,在高峰时段,我们的 Rust 服务器能同时处理高达 2000 万个 websocket 连接。

– Benjamin Bangert,Mozilla 高级工程师

Rust 是 Linkerd 项目技术路线图的基础。其类型系统使我们能够构建模块化、可测试、可组合的单元,而无需牺牲运行时性能。然而,最令人惊讶的是 Rust 的生命周期/借用检查系统如何帮助我们避免了大量资源泄漏问题。两年后,我真的无法想象用其他任何语言来完成这项工作了。

– Oliver Gould,Buoyant 的 CTO

buoyant