Rust революционизировал системное программирование, устраняя целые классы ошибок через свою систему владения. В отличие от языков с ручным управлением памятью (C/C++) или сборщиком мусора (Java/Go), Rust гарантирует безопасность памяти на этапе компиляции. Сердце этой системы — концепции владения и перемещения данных, которые мы детально разберем. Владение — набор правил, управляющих доступом к данным в памяти: - У каждого значения в Rust есть владелец (переменная). - Одновременно только один владелец. - При выходе владельца из области видимости значение уничтожается. Правила владения: 1. Значение может иметь лишь одного владельца. 2. При передаче переменной в функцию или присвоении, владение перемещается. 3. Когда владелец выходит из области видимости, значение удаляется (вызывается drop). Почему перемещение? Rust избегает "поверхностного копирования" (shallow copy), которое приводит к ошибкам в других языках. Вместо этого: let s1 = String::from("Rust"); let s2 = s1; // Владение ПЕРЕМ