网络

为何选择 Rust?

A feather

低资源占用

控制资源使用,将内存和 CPU 占用降至最低。借助编译器来确保您的操作正确。所有这些都在一个高效且易于使用的生态系统中完成。

A shield

安全可靠

Rust 强大的类型检查器可以防止整类错误。确保您清楚地知道状态何时何地共享和修改。在部署之前获得帮助,以捕获故障点。

Connected gears

大规模并发

使用任何适合您的并发方法组合。Rust 将确保您不会意外地在线程或任务之间共享状态。它可以让您毫不畏惧地榨取每一丝扩展性能。

开始使用!

Rust 拥有一个不断增长的、易于使用的 Web 库生态系统。以下是两个示例

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

处理 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 首席技术官, Buoyant

buoyant