Глава 3: Переменные и константы

В этой главе курса по Rust мы рассмотрим переменные и константы. Разберём ключевые концепции: let, mut, const, static, а также затенение переменных (shadowing). Узнаем, как правильно управлять изменяемостью данных и избегать ошибок. 🚀

Mar 10, 2025

Именование переменных

В Rust переменные именуются в соответствии со стандартными правилами:
  • Имена переменных должны начинаться с буквы или подчеркивания _.
  • Можно использовать только буквы, цифры и подчеркивания. В Rust принято использовать snake_case для переменных, а для констант — заглавные буквы с подчеркиванием (MAX_VALUE). (snake_case — стандартный стиль в Rust).
  • Переменные чувствительны к регистру.
Примеры:
let age = 25; let _hidden_variable = 42; let user_name = "Alice";

let и mut — изменяемость переменных

По умолчанию все переменные в Rust являются неизменяемыми, что помогает избежать непреднамеренных изменений в коде и делает программы более безопасными. (immutable). Это означает, что после присваивания значения его нельзя изменить.
let x = 5; x = 10; // Ошибка: переменная неизменяема
Если необходимо изменить значение переменной, нужно использовать mut:
let mut y = 5; y = 10; // Работает, так как `y` объявлена как изменяемая

Константы (const) и статические переменные (static)

Константы (const)

Константы определяются с помощью ключевого слова const и всегда требуют явного указания типа:
const PI: f64 = 3.14159; const MAX_USERS: u32 = 1000;
Константы не могут быть изменяемыми и должны быть известны на этапе компиляции.

Статические переменные (static)

Статические переменные похожи на константы, но живут на всём протяжении выполнения программы и могут быть изменяемыми (если объявлены с mut):
static HELLO_MESSAGE: &str = "Hello, Rust!"; static mut COUNTER: u32 = 0;
Однако изменять static mut небезопасно, поскольку такие переменные могут вызывать гонки данных в многопоточной среде. Поэтому требуется unsafe блок:
unsafe { COUNTER += 1; }

Итоги

🔹 Переменные в Rust неизменяемы по умолчанию, но могут быть изменяемыми с mut.
🔹 Константы (const) требуют явного указания типа и неизменяемы. Они вычисляются на этапе компиляции, тогда как статические переменные (static) могут инициализироваться во время выполнения.
🔹 Статические переменные (static) живут на протяжении всей программы и могут быть изменяемыми, но требуют unsafe при модификации.
В следующей главе разберем базовые типы данных в Rust! 🚀