In Rust si utilizza una tipizzazione statica rigorosa: i tipi di tutte le variabili e funzioni sono noti in fase di compilazione e non possono cambiare a runtime. Questo significa che il compilatore rileverà in anticipo la maggior parte degli errori legati all'uso improprio dei tipi, prima che il programma venga eseguito.
La tipizzazione statica fornisce:
Esempio:
let x: i32 = 5; let y: f64 = 2.0; let z = x as f64 + y; // corretto: x viene convertito in f64 // let w = x + y; // errore di compilazione: tipi diversi
Come implementare in Rust una funzione che lavora sia con numeri che con stringhe? È sufficiente usare il tipo dyn Any?
Risposta:
L'uso di dyn Any consente di eseguire il downcast dei tipi, ma per funzioni generiche in Rust è preferibile utilizzare generics e traits con vincoli. Ad esempio:
use std::fmt::Display; fn print_value<T: Display>(val: T) { println!("{}", val); }
Storia
Storia
#[derive(Serialize)]), il che ha ritardato il rilascio di un giorno.Storia
In uno dei progetti fintech, i programmatori pensavano che Rust convertisse automaticamente i tipi nelle espressioni aritmetiche, come fanno Python o JavaScript. Di conseguenza, durante la fase di compilazione, si sono riversati centinaia di errori, e è stato necessario rifare parte del codice, specificando esplicitamente le conversioni di tipo.