Модульні уроки (2/2)
Примітивні типи
Rust є статично типізованою мовою, що означає, що вона повинна знати тип усіх змінних під час компіляції. Зазвичай компілятор може визначити тип на основі присвоєного значення, але іноді необхідно або корисно вказати його вручну.
Примітивні типи в Rust поділяються на дві основні категорії: скаляри (одне значення) і складені (група значень).
Скалярні типи
Скалярні типи представляють одне значення. Rust має чотири основні скалярні типи:
- Цілі числа: цілі числа. Вони можуть бути підписані (
i8,i16,i32,i64,i128,isize) або без підпису (u8,u16,u32,u64,u128,usize). Тип за замовчуванням –i32. - З плаваючою комою: числа з комою. Вони можуть бути
f32абоf64(подвійна точність, за замовчуванням). - Логічні значення: представляє логічну істинність за допомогою
trueабоfalse(типbool). - Символи: одне скалярне значення Unicode, укладене в одинарні лапки (тип
char), наприклад,'a','ℤ'або emoji'😻'.
Приклад явної анотації типу:
let x: i64 = 42;
let y: f64 = 3.1415;
let is_rust_awesome: bool = true;
let heart_emoji: char = '❤';Складені типи
Складені типи можуть групувати кілька значень в один тип. Іржа має два основних типи примітивних сполук:
Кортежі
кортеж групує значення різних типів у колекцію фіксованого розміру:
let person: (String, i32) = (String::from("Alice"), 30);
// Destructuring to extract values
let (name, age) = person;
// Direct access with index using dot (.)
let name_direct = person.0;
let age_direct = person.1;Масиви (списки фіксованого розміру)
Масив групує кілька елементів одного типу в колекцію фіксованого розміру, що зберігається в стеку:
let numbers = [1, 2, 3, 4, 5]; // Inferred as [i32; 5]
let first = numbers[0]; // Access by index
let third = numbers[2];Якщо ви спробуєте отримати доступ до індексу поза межами масиву (наприклад, numbers[10]), Rust негайно вийде з ладу (паніка) під час виконання, замість того, щоб дозволити неавторизований доступ до пам’яті.
Порівняння
| Особливість | Кортеж | Масив |
|---|---|---|
| Типи елементів | Можуть бути різними | Має бути однаковим |
| Розмір | Виправлено | Виправлено |
| Доступ | Індекс через крапку (наприклад, .0) | Квадратні дужки (наприклад, [0]) |
Спробуйте самі
Оголошіть кортеж із назвою stats, що містить вік 30 (ціле число) та оцінку 95,5 (з плаваючою точкою). Далі виведіть партитуру на екран, безпосередньо звернувшись до другого елемента кортежу за допомогою його індексу.
Показати підказку
Створіть кортеж за допомогою `let stats = (30, 95.5);`. Отримайте доступ до другого елемента за допомогою `stats.1` всередині макросу `println!`.
Рішення доступне після 3 спроб
Оголошіть масив з іменем numbers, що містить цілі значення від 1 до 5. Виведіть третій елемент масиву (індекс 2) на екран за допомогою println!.
Показати підказку
Оголошіть масив за допомогою `let numbers = [1, 2, 3, 4, 5];` і отримайте доступ до третього елемента, проіндексувавши його за допомогою `[2]`.
Рішення доступне після 3 спроб
Враховуючи кортеж `let point = (10, 20);`, скористайтеся деструктуруванням, щоб витягнути значення у дві змінні з іменами `x` і `y`. Потім виведіть суму "x" і "y".
Показати підказку
Використовуйте синтаксис `let (x, y) = point;`, щоб деструктурувати кортеж, а потім підсумувати змінні в `println!`.
Рішення доступне після 3 спроб