Przejdź do głównej treści
eLearner.app
Moduł 1 · Lekcja 2 z 22/14 w kursie~10 min
Lekcje modułu (2/2)

Typy proste

Rust jest językiem o statycznym typowaniu, co oznacza, że musi znać typ wszystkich zmiennych w momencie kompilacji. Zazwyczaj kompilator potrafi wywnioskować typ na podstawie przypisanej wartości, ale czasami konieczne lub przydatne jest określenie go ręcznie.

Typy pierwotne (primitivi) w Rust dzielą się na dwie główne kategorie: skalarne (pojedyncza wartość) i złożone (grupa wartości).

Typy Skalarne

Typy skalarne reprezentują pojedynczą wartość. Rust ma cztery podstawowe:

  1. Liczby całkowite (integers): Liczby bez przecinka. Mogą być ze znakiem (i8, i16, i32, i64, i128, isize) lub bez znaku (u8, u16, u32, u64, u128, usize). Domyślnym typem jest i32.
  2. Liczby zmiennoprzecinkowe (floats): Liczby z przecinkiem. Mogą to być f32 lub f64 (podwójna precyzja, domyślna).
  3. Wartości logiczne (booleans): Reprezentują prawdę lub fałsz za pomocą true lub false (typ bool).
  4. Znaki (characters): Pojedynczy znak Unicode ujęty w pojedynczy cudzysłów (typ char), np. 'a', 'ℤ' lub emoji '😻'.

Przykład jawnej adnotacji typu:

Code
let x: i64 = 42;
let y: f64 = 3.1415;
let is_rust_awesome: bool = true;
let heart_emoji: char = '❤';

Typy Złożone

Typy złożone mogą grupować wiele wartości w jeden typ. Rust ma dwa główne typy złożone:

Krotki (Tuples)

Krotka grupuje wartości różnych typów w kolekcję o stałym rozmiarze:

Code
let person: (String, i32) = (String::from("Alice"), 30);

// Destrutturazione per estrarre valori
let (name, age) = person;

// Accesso diretto con l'indice usando il punto (.)
let name_direct = person.0;
let age_direct = person.1;

Tablice (Arrays - wektory o stałym rozmiarze)

Tablica grupuje wiele elementów tego samego typu w kolekcję o stałym rozmiarze przechowywaną na stosie (stack):

Code
let numbers = [1, 2, 3, 4, 5]; // Rilevato come [i32; 5]
let first = numbers[0]; // Accesso per indice
let third = numbers[2];

Jeśli spróbujesz uzyskać dostęp do indeksu spoza granic tablicy (np. numbers[10]), Rust natychmiast przerwie wykonywanie programu (panika) w czasie wykonywania, zamiast pozwolić na nieautoryzowany dostęp do pamięci.

Porównanie krotek i tablic

CechaKrotka (Tuple)Tablica (Array)
Typ elementówMogą być różneMuszą być takie same
RozmiarStałyStały
DostępZa pomocą kropki (.0, .1)Za pomocą indeksu ([0])

Spróbuj sam

Ćwiczenie#rust.m1.l2.e1
Próby: 0Ładowanie...

Zadeklaruj krotkę o nazwie stats zawierającą wiek 30 (liczba całkowita) i wynik 95.5 (liczba zmiennoprzecinkowa). Następnie wypisz na ekranie wynik, uzyskując dostęp bezpośrednio do drugiego elementu krotki za pomocą indeksu.

Ładowanie edytora...
Pokaż wskazówkę

Utwórz krotkę za pomocą `let stats = (30, 95.5);`. Uzyskaj dostęp do drugiego elementu za pomocą `stats.1` wewnątrz makra `println!`.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#rust.m1.l2.e2
Próby: 0Ładowanie...

Zadeklaruj tablicę o nazwie numbers zawierającą wartości całkowite od 1 do 5. Wypisz na ekranie trzeci element tablicy (indeks 2) za pomocą println!.

Ładowanie edytora...
Pokaż wskazówkę

Zadeklaruj tablicę za pomocą `let numbers = [1, 2, 3, 4, 5];` i uzyskaj dostęp do trzeciego elementu indeksując go za pomocą `[2]`.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#rust.m1.l2.e3
Próby: 0Ładowanie...

Mając daną krotkę `let point = (10, 20);`, użyj destrukturyzacji do wyodrębnienia wartości do dwóch zmiennych o nazwach `x` i `y`. Następnie wypisz sumę `x` i `y`.

Ładowanie edytora...
Pokaż wskazówkę

Użyj składni `let (x, y) = point;` do destrukturyzacji krotki, a następnie zsumuj zmienne w `println!`.

Rozwiązanie dostępne po 3 próbach