W Rust używana jest ścisła statyczna typizacja: typy wszystkich zmiennych i funkcji są znane na etapie kompilacji i nie mogą być zmieniane podczas wykonywania programu. Oznacza to, że kompilator wczesniej wykryje większość błędów związanych z niewłaściwym użyciem typów, zanim program zostanie uruchomiony.
Statyczna typizacja zapewnia:
Przykład:
let x: i32 = 5; let y: f64 = 2.0; let z = x as f64 + y; // poprawnie: x konwertowane na f64 // let w = x + y; // błąd kompilacji: różne typy
Jak w Rust zaimplementować funkcję, która działa zarówno z liczbami, jak i z ciągami znaków? Czy wystarczy użycie typu dyn Any?
Odpowiedź:
Użycie dyn Any umożliwia wykonanie downcastu typów, ale do uniwersalnych funkcji w Rust preferowane jest użycie generyków i traitów z ograniczeniami. Na przykład:
use std::fmt::Display; fn print_value<T: Display>(val: T) { println!("{}", val); }
Historia
Historia
#[derive(Serialize)]), co opóźniło wydanie o dobę.Historia
W jednym z projektów fintech programiści myśleli, że Rust automatycznie konwertuje typy w wyrażeniach arytmetycznych, tak jak to robią Python czy JavaScript. W wyniku tego na etapie kompilacji wylały się setki błędów i trzeba było przerobić część kodu, wyraźnie wskazując konwersje typów.