In Rust wordt een strikte statische typevorming gebruikt: de types van alle variabelen en functies zijn bekend in de compilatiefase en kunnen niet wijzigen tijdens de uitvoering. Dit betekent dat de compiler de meeste fouten die verband houden met onjuist typegebruik van tevoren zal opsporen, vóór het uitvoeren van het programma.
Statische typevorming biedt:
Voorbeeld:
let x: i32 = 5; let y: f64 = 2.0; let z = x as f64 + y; // correct: x wordt omgezet naar f64 // let w = x + y; // compilatiefout: verschillende types
Hoe implementeer je in Rust een functie die werkt met zowel getallen als strings? Is het voldoende om het type dyn Any te gebruiken?
Antwoord:
Het gebruik van dyn Any maakt downcasting van types mogelijk, maar voor generieke functies in Rust is het beter om generics en traits met beperkingen te gebruiken. Bijvoorbeeld:
use std::fmt::Display; fn print_value<T: Display>(val: T) { println!("{}", val); }
Verhaal
Verhaal
#[derive(Serialize)]) toe te voegen, wat de release met een dag vertraagde.Verhaal
In een van de fintech-projecten dachten programmeurs dat Rust automatisch types omzet in wiskundige expressies, zoals dat gebeurt in Python of JavaScript. Als gevolg hiervan ontstonden er honderden fouten in de compilatiefase, en moest een deel van de code worden herschreven, waarbij ze expliciet typeconversies opgaven.