Redes

Por que Rust?

Uma pena

Pouco consumo de recursos

Controle o uso de recursos para manter o uso de memória e CPU no mínimo. Tenha a ajuda do compilador para ter certeza que está tudo certo. E faça isso com um ecossistema produtivo e agradável de usar.

Um escudo

Seguro e confiável

O verificador de tipos de Rust previne toda uma categoria de erros. Garanta exatamente quando e onde o estado é compartilhado e modificado. Receba ajuda para encontrar pontos de falha — antes mesmo de executar em produção.

Engrenagens conectadas

Concorrência em escala

Use qualquer mistura de estratégias de concorrência que funcione para você. Rust garantirá que você não compartilhou o estado acidentalmente entre threads e tarefas. Isso permite alcançar o máximo de performance, sem medo.

Comece agora!

Rust possui um ecossistema em expansão de bibliotecas fáceis de usar para a web. Aqui estão apenas dois exemplos:

Faça POST com 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()?;
Aprenda mais sobre reqwest

Receba POST com 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.")
    }
}
Aprenda mais sobre Rocket

Uso em produção

firefox
Migrar nossa infraestrutura de conexão Push para Rust nos proveu uma base de código fácil de manter focada em corretude, ainda possuindo uma performance fantástica. Nós agora estamos processando até 20 milhões de conexões websocket ao mesmo tempo nos nossos servidores Rust em horários de pico.

– Benjamin Bangert, Staff Engineer, Mozilla

Rust é fundacional para a estratégia de evolução do projeto Linkerd. Seu sistema de tipo nos permite construir unidades modulares, testáveis e reusáveis sem sacrificar performance durante a execução. O que é mais surpreendente, na verdade, é como o sistema de verificação de lifetime/borrow nos ajuda a evitar grandes tipos de vazamento de recursos. Depois de 2 anos, não consigo imaginar usar qualquer outra linguagem para esse trabalho.

– Oliver Gould, CTO, Buoyant

buoyant