rust / beginner
Snippet
Derive-Makros für automatische Trait-Implementierung
Rusts Derive-System generiert automatisch Implementierungen von häufig verwendeten Traits. #[derive(...)] wird an Structs angehängt und weist den Compiler an, Debug für das Ausgeben, Clone für die Duplizierung, PartialEq für den Gleichheitsvergleich und Default für einen Konstruktor zu erzeugen, der alle Felder auf ihre Nullwerte setzt. Dies eliminiert Boilerplate, während die Logik explizit und vorhersehbar bleibt.
snippet.rs
1
#[derive(Debug, Clone, PartialEq, Default)]\nstruct Config {\n username: String,\n max_retries: u32,\n enabled: bool,\n}\n\nfn main() {\n let default_config = Config::default();\n println!("Default: {:?}", default_config);\n \n let custom = Config {\n username: String::from("admin"),\n max_retries: 3,\n enabled: true,\n };\n \n let cloned = custom.clone();\n println!("Cloned: {:?}", cloned);\n println!("Equal: {}", custom == cloned);\n}
Erklärung
1
#[derive(Debug, Clone, PartialEq, Default)]
Makroattribut, das zur Kompilierzeit Trait-Implementierungen erweitert
2
Config::default()
Default setzt username auf "", max_retries auf 0, enabled auf false
3
String::from("admin")
Erstellt einen String aus einem String-Literal für das username-Feld
4
custom.clone()
Clone Trait bietet Deep Copy — beide Structs existieren unabhängig voneinander
5
custom == cloned
PartialEq Trait ermöglicht == Operator Vergleich zwischen Structs