Rust — системный язык программирования без сборщика мусора (GC) с гарантиями безопасности памяти на уровне компилятора. Устраняет целые классы ошибок C/C++: null pointer dereference, use-after-free, data races — до запуска программы.
Как работает система владения
Три ключевых концепции:
- Ownership (Владение)
- Каждое значение имеет ровно одного владельца. При выходе из области видимости память освобождается автоматически — без GC и без накладных расходов на паузы сборщика.
- Borrowing (Заимствование)
- Ссылки на данные: либо одна изменяемая (
&mut T), либо несколько неизменяемых (&T). Две изменяемых ссылки одновременно — ошибка компиляции, не runtime-сбой. - Lifetimes (Времена жизни)
- Аннотации
'a, гарантирующие что ссылка не переживёт данные, на которые указывает. Проверяется в compile time.
Применение в веб-инфраструктуре
- Веб-серверы: Actix-web — лидер TechEmpower Framework Benchmarks по plaintext-запросам.
- Инструменты сборки: SWC (замена Babel), esbuild-аналоги — компиляция TypeScript в 20–70× быстрее.
- Edge/WASM: Cloudflare Workers поддерживает Rust → WASM. Nginx-модули на Rust через ngx-rust.
- Ядро Linux: с версии 6.1 (2022) Rust официально поддерживается для разработки модулей ядра.
- CLI-утилиты:
ripgrep(замена grep),fd(замена find),bat(замена cat) — быстрее C-аналогов.
История
Rust начат Грэйдоном Хором (Graydon Hoare) в Mozilla в 2006 году как личный проект. Mozilla официально спонсировала с 2009 года — Rust использовался для разработки браузерного движка Servo. Rust 1.0 стабильный — май 2015 года. С 2016 по 2023 год Rust занимал первое место в опросах Stack Overflow как «самый любимый язык» (8 лет подряд). Rust Foundation основана в 2021 году при поддержке Google, Microsoft, Amazon, Huawei, Mozilla.
Деплой Rust в хостинге
Бинарные файлы Rust статически скомпилированы — не требуют runtime на целевом сервере. На VPS: собрать бинарник для Linux x86_64 с cargo build --release --target x86_64-unknown-linux-musl, скопировать один файл, запустить. Docker multi-stage build: сборка в rust:alpine, копирование бинарника в scratch или alpine — итоговый образ 5–15 МБ.
На что обращать внимание
Время компиляции Rust значительно — крупные проекты компилируются 5–20 минут. CI/CD использует кэш артефактов (~/.cargo) для ускорения повторных сборок. Кривая обучения — borrow checker поначалу отклоняет корректный на вид код: нужно время на понимание модели памяти. Docker образ rust:latest — 1.7 ГБ, для CI используют rust:alpine (~300 МБ).
Cargo — пакетный менеджер Rust
Cargo — встроенный пакетный менеджер и система сборки Rust. Файл Cargo.toml описывает зависимости:
[dependencies]
tokio = { version = "1", features = ["full"] }
serde = { version = "1", features = ["derive"] }
axum = "0.7"
Crates.io — реестр пакетов Rust: 140 000+ крейтов. cargo build --release — оптимизированная сборка. cargo test — встроенное тестирование. cargo clippy — линтер. cargo audit — проверка зависимостей на известные уязвимости перед CI/CD-деплоем. Tokio — асинхронный runtime для сетевых приложений на Rust, аналог Node.js event loop, но многопоточный.