Introduction : Pourquoi l'initialisation des structures en Rust n'est-elle pas ennuyeuse ?
\n\nSi vous avez déjà écrit en Rust, vous avez sûrement rencontré le moment où vous voulez dire : « Mais pourquoi dois-je encore et encore écrire field: field ? C'est évident ! ».
Oui, Rust est un langage sévère, strict et incroyablement expressif. Mais même lui a une place pour le sucre syntaxique, qui rend le code plus court, plus propre et plus agréable à l'œil. Cela concerne particulièrement l'initialisation des structures — cette routine que nous faisons des dizaines de fois par jour.
\n\nDans cet article, nous ne répondons pas simplement à une question populaire sur Stack Overflow : « Existe-t-il un moyen plus rapide/plus court d'initialiser des variables dans une struct Rust ? ». Nous allons analyser toutes les méthodes — des basiques aux avancées — et montrer comment écrire un code à la fois rapide, lisible et « rustique » (idiomatic Rust).
\n\nPrêt à accélérer votre travail avec Rust struct ? C'est parti !
\n\n1. Méthode classique : nommage explicite des champs
\n\nCommençons par les bases. Supposons que nous ayons une structure User :
struct User {\n username: String,\n email: String,\n sign_in_count: u64,\n active: bool,\n}\n\nL'initialisation standard ressemble à ceci :
\n\nlet user1 = User {\n email: String::from("someone@example.com"),\n username: String::from("someusername123"),\n active: true,\n sign_in_count: 1,\n};\n\nTout est honnête, tout est explicite. Mais quand vous avez 10 à 15 champs et que les noms de variables correspondent aux noms des champs — cela commence à agacer. Vous écrivez email: email et vous vous sentez comme un bureaucrate remplissant un formulaire.
Bonne nouvelle : Rust le ressent aussi. Et il a trouvé une solution.
\n\n2. Field Init Shorthand : quand le nom de la variable correspond au champ
\n\nDepuis Rust 1.17, vous pouvez utiliser une notation abrégée si le nom de la variable correspond au nom du champ de la structure. Cela s'appelle field init shorthand.
\n\nlet email = String::from("someone@example.com");\nlet username = String::from("someusername123");\n\nlet user1 = User {\n email, // au lieu de email: email\n username, // au lieu de username: username\n active: true,\n sign_in_count: 1,\n};\n\nJoli, n'est-ce pas ? Rust comprend tout seul que email est à la fois une variable et un champ. Cette astuce est particulièrement pratique lorsque vous transmettez des paramètres de fonction déjà nommés de manière significative.
Quand l'utiliser : toujours lorsque le nom de la variable correspond au nom du champ. Ce n'est pas seulement « plus rapide à écrire », c'est du Rust idiomatique.
\n\n3. Struct Update Syntax : copier une structure avec modifications
\n\nSupposons que nous ayons déjà user1 et que nous voulions créer user2 en modifiant uniquement l'email. Devons-nous vraiment réécrire tous les champs ? Non !
let user2 = User {\n email: String::from("another@example.com"),\n ..user1 // les autres champs sont pris de user1\n};\n\nL'opérateur .. est le struct update syntax. Il dit au compilateur : « Prends tous les champs restants de user1 ». Important : après cela, user1 sera partiellement déplacé (si les champs n'implémentent pas Copy), alors soyez prudent avec la propriété.
Cette syntaxe économise des lignes entières lorsque vous travaillez avec l'initialisation des structures Rust à partir de données existantes.
\n\n4. Trait Default : initialisation avec valeurs par défaut
\n\nEt si la plupart des champs doivent avoir des valeurs standard ? Par exemple, active: true et sign_in_count: 0 ? Vous pouvez implémenter le trait Default :
#[derive(Default)]\nstruct User {\n username: String,\n email: String,\n active: bool,\n sign_in_count: u64,\n}\n\n// Maintenant :\nlet user_default = User::default();\n// username: "", email: "", active: false, sign_in_count: 0\n\nMais attendez !
Blogs
Book Recommendations
Lire aussi
WebSocket en TypeScript : développement avancé d'applications temps réel
C++ Open Source : Premier commit du soir sans peur
Réveil en Android avec Kotlin : analyse complète d'Alarm Manager pour débutants
Comment devenir développeur Kotlin : conseils et CV pour débutants
Installer des bibliothèques Python : guide complet 2025