Почему в Rust нет Garbage Collector

«Почему в Rust нет Garbage Collector» — вопрос из категории Архитектура, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Rust использует систему владения (ownership) и заимствования (borrowing) для управления памятью во время компиляции, что делает ненужным сборщик мусора (GC). Это обеспечивает:

  1. Предсказуемость — нет пауз из-за GC.
  2. Безопасность — компилятор гарантирует отсутствие утечек и висячих указателей.
  3. Производительность — нет накладных расходов на runtime-управление памятью.

Пример:

fn main() {
    let s = String::from("hello"); // s владеет строкой
    takes_ownership(s);            // s перемещается в функцию
    // println!("{}", s);          // Ошибка: s больше не валидна
}

fn takes_ownership(s: String) {    // s становится владельцем
    println!("{}", s);             // память освобождается при выходе
}

Вместо GC Rust полагается на RAII (Resource Acquisition Is Initialization) и проверки на этапе компиляции.