Rust Курс

Переменные, изменяемость и типы данных в Rust

Самоучитель Python 3, собранный из материалов данного сайта.Предназначен в основном для тех, кто хочет изучить язык программирования Python с нуля.

Неизменяемость по умолчанию

В Rust переменные по умолчанию неизменяемы. Это осознанное дизайнерское решение, которое помогает предотвращать ошибки. Используйте mut, чтобы сделать переменную изменяемой:

let x = 5;          // неизменяемая
// x = 6;           // ❌ ошибка компиляции!

let mut y = 5;      // изменяемая
y = 6;              // ✅ ok
println!("{}", y);  // 6

Константы

const MAX_POINTS: u32 = 100_000;
const PI: f64 = 3.14159265358979;

// Константы всегда неизменяемы, должны иметь явное указание типа
// и могут быть объявлены в любой области видимости

Затенение (Shadowing)

Можно объявить новую переменную с тем же именем — новая переменная затеняет старую:

let x = 5;
let x = x + 1;    // затеняет предыдущий x
let x = x * 2;    // затеняет снова
println!("{}", x); // 12

// Затенение позволяет менять тип!
let spaces = "   ";        // &str
let spaces = spaces.len(); // usize

Скалярные типы

let i: i32 = -42;        // знаковое целое (i8, i16, i32, i64, i128)
let u: u64 = 1_000_000;  // беззнаковое целое (u8, u16, u32, u64, u128)
let f: f64 = 3.14;       // число с плавающей точкой (f32, f64)
let b: bool = true;      // булево значение
let c: char = 'Z';      // символ (4 байта, скалярное значение Unicode)

Составные типы

// Кортеж — фиксированный размер, можно смешивать типы
let tup: (i32, f64, bool) = (500, 6.4, true);
let (x, y, z) = tup;     // деструктуризация
println!("{}", tup.0);   // доступ по индексу: 500

// Массив — фиксированный размер, один тип
let arr: [i32; 5] = [1, 2, 3, 4, 5];
println!("{}", arr[0]);  // 1
let zeros = [0; 3];      // [0, 0, 0]