Macro format!
Fait partie de la section Fundamentals du Journey Rust de Coddy — leçon 70 sur 75.
En Rust, la macro format! vous permet de combiner du texte avec des variables de manière lisible et personnalisable. Cette macro est similaire à println!, mais au lieu d'afficher la sortie dans la console, elle retourne une chaîne formatée que vous pouvez stocker dans une variable ou utiliser dans d'autres opérations.
La syntaxe la plus simple utilise des espaces réservés non nommés {} :
let name = "Alice";
let age = 30;
let formatted = format!("Name: {}, Age: {}", name, age);
println!("{}", formatted);
// Sortie : Name: Alice, Age: 30Vous pouvez utiliser les noms de variables directement dans les espaces réservés :
let name = "Bob";
let age = 25;
let formatted = format!("Name: {name}, Age: {age}");
println!("{}", formatted);
// Sortie : Name: Bob, Age: 25Vous pouvez spécifier la position des arguments à l'aide de nombres :
let formatted = format!("{1} {0} {2}", "first", "second", "third");
println!("{}", formatted);
// Sortie : second first thirdVous pouvez contrôler la manière dont les valeurs sont formatées à l'aide de spécificateurs de format :
// Formatage de nombres
let pi = 3.1415926;
let formatted_float = format!("{:.2}", pi);
// "3.14"
// Remplissage avec des zéros
let padded = format!("{:0>5}", "123");
// "00123"Défi
FacileCréez un programme qui génère un code secret à partir d'un nom et d'une année de naissance en utilisant ces règles exactes :
- Prend la première lettre du nom et la met en majuscule
- Inverse les chiffres de l'année
- Encadre la première lettre avec des symboles "⭐"
- Ajoute un "-" entre la lettre encadrée et l'année inversée
Pour inverser une chaîne de caractères, utilisez le code suivant : .to_string().chars().rev().collect::<String>()
Aide-mémoire
La macro format! combine du texte avec des variables et retourne une chaîne formatée qui peut être stockée dans une variable.
Syntaxe de base avec des espaces réservés non nommés :
let name = "Alice";
let age = 30;
let formatted = format!("Name: {}, Age: {}", name, age);Utilisation directe des noms de variables dans les espaces réservés :
let name = "Bob";
let age = 25;
let formatted = format!("Name: {name}, Age: {age}");Spécification des positions des arguments avec des nombres :
let formatted = format!("{1} {0} {2}", "first", "second", "third");
// Output: "second first third"Spécificateurs de format pour contrôler la sortie :
// Formatage de nombres
let pi = 3.1415926;
let formatted_float = format!("{:.2}", pi); // "3.14"
// Remplissage avec des zéros (Padding)
let padded = format!("{:0>5}", "123"); // "00123"Pour inverser une chaîne de caractères : .to_string().chars().rev().collect::<String>()
Essayez vous-même
use std::io;
fn main() {
let mut input_name = String::new();
let mut input_year = String::new();
io::stdin().read_line(&mut input_name).unwrap();
io::stdin().read_line(&mut input_year).unwrap();
let name = input_name.trim();
let year: i32 = input_year.trim().parse().unwrap();
// Écrivez votre code ci-dessous
let secret_code =
println!("{}", secret_code);
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fundamentals
4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloRaccourcis arithmétiquesOpérateurs de comparaisonComparaison de chaînes7Entrées/Sorties de base
Afficher dans la consoleLire la saisie utilisateurRécapitulatif - Jusqu'à 120Récapitulatif - Vrai ou Faux5Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 33Variables - Partie 2
Déclaration de typeConventions de nommageInférence de typeRécapitulatif - Initialiser des variablesConversion de type9Boucles
Boucle For sur une sérieBoucle WhileBreakContinueBoucles imbriquéesÉtiquettes de boucleBoucle infinieRécapitulatif - Entrée dynamique12Bases des tableaux
Déclaration de tableauxTableau comme paramètreAccès aux élémentsModification de tableauxRécapitulatif - Affichage formaté d'un tableau15Opérations sur les chaînes
Méthodes de chaînesMacro format!Conversion de chaînesRécapitulatif - Format