Сетевое взаимодействие

Почему Rust?

Перо

Низкая стоимость

Возьмите под контроль использование ресурсов чтобы минимизировать использование памяти и процессора. Получите помощь от компилятора, чтобы быть уверенным, что делаете всё правильно. И делайте это с продуктивной и приятной в использовании экосистемой.

Щит

Безопасный и надёжный

Мощная проверка типов Rust предотвращает целые классы ошибок. Убедитесь, что вы точно знаете, когда и где состояние бывает общим и изменяющимся. Получите помощь в отлове точек отказа ещё до развёртывания.

Соединённые шестерёнки

Конкурентность и масштабируемость

Используйте подход параллельного программирования, который наилучшим образом соответствует вашим потребностям. Rust предотвращает одновременное использование состояний между потоками или задачами. Это позволяет без страха достичь максимальной производительности.

Начнём!

Rust имеет растущую экосистему простых в использовании библиотек для web. Вот только два примера:

Отправка 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 позволил нам легче поддерживать кодовую базу и сфокусироваться на корректности и высокой производительности. В настоящее время мы одновременно обрабатываем до 20 миллионов сетевых подключений в часы пик с серверами на Rust.

– Benjamin Bangert, Staff Engineer, Mozilla

Rust является основой технологической дорожной карты Linkerd. Его система типов позволяет нам создавать модульные, тестируемые компонуемые единицы без ущерба для производительности во время исполнения. Однако самое удивительное то, что система проверки заимствований и времён жизни, позволяет нам избежать больших утечек ресурсов. После 2 лет, я не могут представить использование для работы какого-либо другого языка.

– Oliver Gould, CTO, Buoyant

buoyant