Lecții din modul (2/2)
Tipuri primitive
Rust este un limbaj tastat static, ceea ce înseamnă că trebuie să cunoască tipul tuturor variabilelor în momentul compilării. De obicei, compilatorul poate deduce tipul pe baza valorii atribuite, dar uneori este necesar sau util să îl specificați manual.
Tipurile primitive din Rust sunt împărțite în două categorii principale: scalari (valoare unică) și compuși (grup de valori).
Tipuri scalare
Tipurile scalare reprezintă o singură valoare. Rust are patru tipuri scalare fundamentale:
- Numere întregi: numere întregi. Acestea pot fi semnate (
i8,i16,i32,i64,i128,isizeLINE,TECTED_INLINE_5,PROTECTED,PROTECTED_INLINE) sauu16,u32,u64,u128,usize). Tipul implicit estei32. - Floating-point: numere cu zecimale. Acestea pot fi
f32sauf64(precizie dublă, implicită). - Booleans: Reprezentați adevărul logic cu
truesaufalse(tastațibool). - Caractere: o singură valoare scalară Unicode cuprinsă între ghilimele simple (tip
char), de exemplu,'a','ℤ'sau emoji'😻'.
Exemplu de adnotare de tip explicit:
let x: i64 = 42;
let y: f64 = 3.1415;
let is_rust_awesome: bool = true;
let heart_emoji: char = '❤';Tipuri compuse
Tipurile compuse pot grupa mai multe valori într-un singur tip. Rugina are două tipuri principale de compuși primitivi:
Tupluri
Un tuplu grupează valori de diferite tipuri într-o colecție de dimensiuni fixe:
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;Matrice (liste cu dimensiuni fixe)
O matrice grupează mai multe elemente de același tip într-o colecție de dimensiuni fixe stocate pe stivă:
let numbers = [1, 2, 3, 4, 5]; // Inferred as [i32; 5]
let first = numbers[0]; // Access by index
let third = numbers[2];Dacă încercați să accesați un index în afara limitelor matricei (de exemplu, numbers[10]), Rust se va prăbuși imediat (în panică) în timpul execuției, în loc să permită accesul neautorizat la memorie.
Comparaţie
| Caracteristica | tuplu | Matrice |
|---|---|---|
| Tipuri de elemente | Poate fi diferit | Trebuie să fie la fel |
| Dimensiune | Fix | Fix |
| Acces | Indexați prin punct (de ex., .0) | Paranteze pătrate (de ex., [0]) |
Încercați-l singur
Declarați un tuplu numit statistici care conține vârsta de 30 (întreg) și scorul 95,5 (float). Apoi, tipăriți scorul pe ecran accesând direct al doilea element al tuplului folosind indexul acestuia.
Afișează indiciu
Creați tuplu cu `let stats = (30, 95.5);`. Accesați al doilea element folosind `stats.1` în interiorul macro-ului `println!`.
Soluție disponibilă după 3 încercări
Declarați o matrice numită numere care conțin valori întregi de la 1 la 5. Imprimați al treilea element al matricei (index 2) pe ecran folosind println!.
Afișează indiciu
Declarați matricea cu `let numere = [1, 2, 3, 4, 5];` și accesați al treilea element indexându-l cu `[2]`.
Soluție disponibilă după 3 încercări
Având în vedere tuplul `let point = (10, 20);`, utilizați destructurarea pentru a extrage valorile în două variabile numite `x` și `y`. Apoi, tipăriți suma lui `x` și `y`.
Afișează indiciu
Utilizați sintaxa `let (x, y) = point;` pentru a destructura tuplu și apoi însumați variabilele în `println!`.
Soluție disponibilă după 3 încercări