Глава 4: Базовые типы данных

В этой главе курса по Rust мы разбираем базовые типы данных: числа с разной знаковостью и размером, строки String и &str, булевы значения, кортежи и массивы. Показаны практические примеры использования и поясняется, когда и как применять эти типы в коде. 🚀

Apr 14, 2025

Глава 4: Базовые типы данных

Числовые типы

Rust предоставляет несколько числовых типов с явным указанием знаковости и размера:

Целые числа

Тип
Размер
Знаковость
Диапазон
i8
8 бит
signed
-128 до 127
u8
8 бит
unsigned
0 до 255
i32
32 бита
signed
-2_147_483_648 до 2_147_483_647
u32
32 бита
unsigned
0 до 4_294_967_295
i64, u64, i128, u128 — для больших значений
По умолчанию Rust использует i32 в арифметических операциях, если тип не указан явно.

Числа с плавающей точкой

  • f32 — 32-битный float
  • f64 — 64-битный float (используется по умолчанию)
let a: i32 = -10; let b: u8 = 255; let pi: f64 = 3.14159;

Строки

В Rust существует два основных типа строк:
  • &str — строковый slice (срез), неизменяемый, часто используется для литералов.
  • String — изменяемый тип строки, управляет памятью в куче.
let s1: &str = "Hello"; let s2: String = String::from("World");
Преобразование между ними: это может понадобиться, например, при передаче строки в функцию, которая ожидает String, или при использовании API, возвращающего &str.
let s3 = s1.to_string(); let s4 = &s2[..];

Булевы значения

Булев тип представлен как bool и может быть только true или false:
let is_active: bool = true;

Кортежи (tuples)

Кортежи позволяют объединять значения разных типов в одну структуру и имеют фиксированную длину:
let person: (&str, i32) = ("Alice", 30); let (name, age) = person; // деструктуризация
Обращение по индексу:
println!("{} is {} years old", person.0, person.1);

Массивы

Массивы имеют фиксированный размер и содержат элементы одного типа. Они полезны при работе с известным количеством элементов и позволяют эффективно использовать статическую память:
let numbers: [i32; 3] = [1, 2, 3]; let repeated = [0; 5]; // [0, 0, 0, 0, 0]
Обращение к элементу массива:
println!("{}", numbers[0]);

Итоги

🔹 Rust строго типизирован и требует явного указания типа в случае неоднозначности.
🔹 Строки представлены в виде &str и String, каждый имеет своё назначение.
🔹 Кортежи и массивы позволяют группировать данные, но массивы фиксированы по размеру.
🔹 Использование числовых и булевых типов помогает точно моделировать данные в программе.
В следующей главе мы изучим управление потоком выполнения: условия и циклы. 🚀