# Rust (язык)

> Системный язык программирования с гарантиями безопасности памяти без сборщика мусора, основанными на владении и заимствовании.

Источник: https://llmdocs.ru/wiki/rust/ · обновлено 2026-11-09 · лицензия CC BY-SA 4.0

- **Класс языка**: мультипарадигменный, системный
- **Появился в**: 2010 (публично), 1.0 — 15 мая 2015
- **Автор**: Грейдон Хоар
- **Разработчик**: проект Rust, Rust Foundation (с 2021)
- **Выпуск версий**: каждые 6 недель; редакции 2015, 2018, 2021, 2024
- **Типизация**: статическая, строгая, с выводом типов
- **Управление памятью**: владение и заимствование, без сборщика мусора
- **Компилятор**: rustc (бэкенд LLVM)
- **Расширение файлов**: `.rs`
- **Лицензия**: MIT / Apache 2.0
- **Сайт**: [rust-lang.org](https://www.rust-lang.org/)
**Rust** — компилируемый системный язык программирования, который сочетает производительность уровня C и C++ с гарантиями безопасности памяти. Ошибки вроде обращения к освобождённой памяти, двойного освобождения и гонок данных отсекаются ещё на этапе компиляции благодаря системе [владения и заимствования](https://llmdocs.ru/wiki/ownership-borrowing.md), без сборщика мусора и без накладных расходов во время работы программы. Rust используют для операционных систем, браузеров, сетевых сервисов, инструментов командной строки и [WebAssembly](https://llmdocs.ru/wiki/webassembly.md).

## История

Грейдон Хоар начал Rust как личный проект в 2006 году; в 2009-м его разработку стала спонсировать Mozilla, рассчитывая использовать язык для нового браузерного движка Servo. Ранние версии сильно отличались от современной: в языке были сборщик мусора и зелёные потоки, от которых впоследствии отказались.

Стабильная версия Rust 1.0 вышла 15 мая 2015 года с обещанием обратной совместимости.[2] С тех пор новые версии выходят каждые шесть недель.[6] Несовместимые изменения синтаксиса вводятся через **редакции** (editions) — 2015, 2018, 2021 и 2024; крейты разных редакций свободно работают вместе.[4]

В 2021 году создан независимый фонд Rust Foundation, учредителями которого стали AWS, Google, Huawei, Microsoft и Mozilla.[3] В 2022 году поддержка Rust вошла в ядро [Linux](https://llmdocs.ru/wiki/linux.md) (версия 6.1) как второй язык после C.[5] Язык много лет подряд возглавлял опрос Stack Overflow в номинации «самый любимый». Неофициальный талисман — краб Феррис.

## Ключевые идеи

- **Владение.** У каждого значения ровно один владелец; когда владелец выходит из области видимости, значение освобождается. Передача значения перемещает владение.
- **Заимствование.** Можно одновременно иметь либо сколько угодно неизменяемых ссылок `&T`, либо одну изменяемую `&mut T`. Это правило исключает гонки данных.
- **Абстракции без накладных расходов.** Итераторы, замыкания, обобщённые типы компилируются в код, сравнимый с написанным вручную.
- **Алгебраические типы и сопоставление с образцом.** `enum` с данными и `match`, проверяющий полноту вариантов.
- **Нет null и исключений.** Отсутствие значения выражается типом `Option<T>`, ошибка — `Result<T, E>` (см. [Обработка ошибок в Rust (Result, ?)](https://llmdocs.ru/wiki/rust-errors.md)).
- **Трейты** вместо наследования (см. [Трейты (Rust)](https://llmdocs.ru/wiki/rust-traits.md)).

## Пример

```rust
use std::collections::HashMap;

fn word_count(text: &str) -> HashMap<String, usize> {
    let mut counts = HashMap::new();
    for word in text.split_whitespace() {
        *counts.entry(word.to_lowercase()).or_insert(0) += 1;
    }
    counts
}

fn main() {
    let counts = word_count("Раз два раз три раз");
    match counts.get("раз") {
        Some(n) => println!("«раз» встречается {n} раз(а)"),
        None => println!("не найдено"),
    }
}
```

## Инструменты

Экосистема собрана вокруг официальных утилит:

- **rustup** — установка компилятора и переключение между версиями;
- **[Cargo](https://llmdocs.ru/wiki/cargo.md)** — сборка, зависимости, тесты, публикация пакетов (крейтов) на crates.io;
- **[Clippy и rustfmt](https://llmdocs.ru/wiki/clippy-rustfmt.md)** — линтер и форматировщик;
- **rust-analyzer** — языковой сервер для редакторов.

Компилятор славится подробными сообщениями об ошибках с подсказками, как их исправить.

## Применение

- системное ПО: компоненты Windows, Android, ядра Linux;
- инфраструктура: прокси, базы данных, среды исполнения (например, Deno);
- инструменты разработчика: [Ruff](https://llmdocs.ru/wiki/ruff.md) и [uv](https://llmdocs.ru/wiki/uv.md) для Python, ripgrep, сборщики JavaScript;
- встраиваемые системы и [WebAssembly](https://llmdocs.ru/wiki/webassembly.md).

## Сравнение

| | Rust | C++ | [Go](https://llmdocs.ru/wiki/go.md) |
|---|---|---|---|
| Безопасность памяти | гарантирована компилятором (вне `unsafe`) | на совести программиста | сборщик мусора |
| Сборщик мусора | нет | нет | есть |
| Скорость компиляции | низкая | низкая | высокая |
| Порог входа | высокий | высокий | низкий |

Для низкоуровневых операций, которые компилятор не может проверить, есть блоки `unsafe` (см. [Unsafe Rust](https://llmdocs.ru/wiki/unsafe-rust.md)).

## Критика

Главные претензии — крутая кривая обучения (споры с «проверяющим заимствования»), долгая компиляция больших проектов и сложность асинхронного программирования. Кроме того, экосистема моложе, чем у C++ или Java, и ряд библиотек ещё не достиг версии 1.0.

## См. также

- [Владение и заимствование (Rust)](https://llmdocs.ru/wiki/ownership-borrowing.md)
- [Cargo и crates.io](https://llmdocs.ru/wiki/cargo.md)
- [Go vs Rust — сравнение](https://llmdocs.ru/wiki/go-vs-rust.md)
- [Сборка мусора vs ручное управление памятью](https://llmdocs.ru/wiki/gc-vs-manual-memory.md)

## Источники

1. [The Rust Programming Language (книга)](https://doc.rust-lang.org/book/)
2. [Announcing Rust 1.0 — Rust Blog](https://blog.rust-lang.org/2015/05/15/Rust-1.0.html)
3. [Rust Foundation — About](https://foundation.rust-lang.org/about/)
4. [The Rust Edition Guide](https://doc.rust-lang.org/edition-guide/)
5. [Rust for Linux](https://rust-for-linux.com/)
6. [Rust Release Train (6-week cycle)](https://doc.rust-lang.org/book/appendix-07-nightly-rust.html)
