~/VibeHandbook
PDF бесплатно

Языки

rust-lang.org

Rust

Что это

Rust — это компилируемый системный язык, ориентированный на безопасность работы с памятью. Большинство языков запускают сборщик мусора — инструмент, который в фоне автоматически освобождает неиспользуемую память. Rust обходится без этого уборщика и вместо этого сам доказывает, что память обрабатывается правильно, ещё на этапе сборки программы. Представьте библиотечную книгу: в один момент держать её и писать в ней может только один человек, а книгу, которую уже вернули и выбросили, система выдать откажется — так что вы не сможете случайно воспользоваться тем, чего уже нет. Именно эту роль для ваших данных играет модель владения и заимствования в Rust. Она гарантирует ещё до запуска программы, что вы не столкнётесь с гонками данных (когда два участка кода меняют одно и то же одновременно) или ошибками использования после освобождения (когда используется уже очищенная память). В итоге вы получаете скорость уровня C с куда меньшим числом способов выстрелить себе в ногу.

Сильные стороны

  • Безопасность памяти и потоков, проверяемая на этапе сборки программы, без сборщика мусора (фонового уборщика памяти, который запускает большинство языков).
  • Производительность на уровне C и C++.
  • Богатая система типов, сопоставление с образцом и первоклассный пакетный менеджер (Cargo — встроенный в Rust инструмент сборки и управления пакетами).
  • Превосходные ошибки компилятора, которые объясняют, что пошло не так и как это исправить.

Компромиссы

  • Крутая кривая обучения — на усвоение работы borrow checker (механизма Rust, который обеспечивает те самые правила «книгу держит только один за раз», описанные выше) уходит немало времени.
  • Писать медленнее и компилировать дольше, чем на языках более высокого уровня.
  • Избыточен для простых скриптов или быстрых прототипов.
  • Асинхронный Rust и обобщённый код с обилием времён жизни могут стать по-настоящему запутанными.

Когда обращаться

Обращайтесь к Rust, когда производительность, надёжность и контроль над ресурсами важны одновременно: системное ПО, игровые движки, инструменты командной строки, WebAssembly, встраиваемые системы или сервисы, критичные к производительности. Он плохо подходит для одноразовых скриптов, где гарантии безопасности не оправдывают трений.

Подходит для vibe coding

ИИ-ассистенты генерируют правдоподобный Rust, но настоящий арбитр — borrow checker; ожидайте, что придётся вставлять ошибки компилятора обратно и итерировать, и это работает хорошо, потому что диагностика Rust точна, а модель может действовать на её основе. Направьте ИИ опираться на Result и ? для обработки ошибок, предпочитать владеющие типы или ясные заимствования вместо борьбы с временами жизни, а также явно предлагать крейты (crate — переиспользуемые пакеты кода в Rust, с записями в Cargo.toml). Просите тесты cargo test, чтобы вы могли проверить безопасность и поведение. Когда модель предлагает unsafe, возразите и сначала попросите безопасную альтернативу.

fn main() {
    let nums = vec![3, 1, 4, 1, 5, 9, 2, 6];
    let sum: i32 = nums.iter().filter(|&&n| n % 2 == 0).sum();
    println!("Sum of evens: {sum}");
}