Redes

¿Por qué Rust?

Una pluma

Bajo coste

Controla el uso de recursos y mantén el consumo de memoria y CPU al mínimo. Recibe ayuda del compilador para tener certeza de que todo está correcto. Y con un ecosistema que es productivo y agradable de usar.

Un escudo

Seguro y fiable

El potente sistema de tipos de Rust previene toda clase de errores. Controla con exactitud cuándo y dónde se comparte y se modifica el estado. Recibe ayuda para encontrar puntos de fallo antes de la puesta en producción.

Engranajes conectados

Concurrente a escala

Usa cualquier mezcla de estrategias de concurrencia que funcione para tí. Rust te garantiza que no compartes accidentalmente estado entre hilos o tareas. Eso te permite exprimir la escalabilidad al máximo, sin temor.

¡Comenzar!

Rust posee un ecosistema en expansión de bibliotecas para la web fáciles de usar. Aquí tienes dos ejemplos:

POST de un 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()?;
Saber más sobre reqwest

Recibir un POST con 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.")
    }
}
Saber más sobre Rocket

Uso en producción

firefox
Migrar nuestra infraestructura de conexión Push a Rust ha resultado en una base de código más fácil de mantener con énfasis en la corrección y un rendimiento fantástico. Actualmente estamos respondiendo hasta 20 millones de conexiones websocket simultáneas en horas punta con nuestros servidores Rust.

– Benjamin Bangert, Staff Engineer, Mozilla

Rust es un componente fundamental en la estrategia tecnológica del proyecto Linkerd. Su sistema de tipos nos permite construir unidades modulares, comprobables y componibles sin sacrificar el rendimiento. No obstante, lo más sorprendente es como el sistema de verificación de lifetime/borrow nos evita un gran número de fugas de memoria. Después de 2 años, no me puedo imaginar usar cualquier otro lenguaje para esta tarea.

– Oliver Gould, CTO, Buoyant

buoyant