Macro format!
Parte da seção Fundamentals do Journey de Rust da Coddy — lição 70 de 75.
Em Rust, a macro format! permite combinar texto com variáveis de uma forma legível e personalizável. Esta macro é semelhante a println!, mas em vez de imprimir a saída no console, ela retorna uma string formatada que você pode armazenar em uma variável ou usar em outras operações.
A sintaxe mais simples utiliza espaços reservados sem nome {}:
let name = "Alice";
let age = 30;
let formatted = format!("Name: {}, Age: {}", name, age);
println!("{}", formatted);
// Saída: Name: Alice, Age: 30Você pode usar nomes de variáveis diretamente nos espaços reservados:
let name = "Bob";
let age = 25;
let formatted = format!("Name: {name}, Age: {age}");
println!("{}", formatted);
// Saída: Name: Bob, Age: 25Você pode especificar a posição dos argumentos usando números:
let formatted = format!("{1} {0} {2}", "first", "second", "third");
println!("{}", formatted);
// Saída: second first thirdVocê pode controlar como os valores são formatados usando especificadores de formato:
// Formatação de números
let pi = 3.1415926;
let formatted_float = format!("{:.2}", pi);
// "3.14"
// Preenchimento com zeros
let padded = format!("{:0>5}", "123");
// "00123"Desafio
FácilCrie um programa que gere um código secreto a partir de um nome e ano de nascimento usando estas regras exatas:
- Pega a primeira letra do nome e a torna maiúscula
- Inverte os dígitos do ano
- Envolve a primeira letra com símbolos "⭐"
- Adiciona um "-" entre a letra envolvida e o ano invertido
Para inverter uma string, use o seguinte código: .to_string().chars().rev().collect::<String>()
Folha de consulta
A macro format! combina texto com variáveis e retorna uma string formatada que pode ser armazenada em uma variável.
Sintaxe básica com espaços reservados (placeholders) não nomeados:
let name = "Alice";
let age = 30;
let formatted = format!("Name: {}, Age: {}", name, age);Usando nomes de variáveis diretamente nos espaços reservados:
let name = "Bob";
let age = 25;
let formatted = format!("Name: {name}, Age: {age}");Especificando posições de argumentos com números:
let formatted = format!("{1} {0} {2}", "first", "second", "third");
// Output: "second first third"Especificadores de formato para controlar a saída:
// Formatação de números
let pi = 3.1415926;
let formatted_float = format!("{:.2}", pi); // "3.14"
// Preenchimento com zeros
let padded = format!("{:0>5}", "123"); // "00123"Para inverter uma string: .to_string().chars().rev().collect::<String>()
Experimente você mesmo
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();
// Escreva seu código abaixo
let secret_code =
println!("{}", secret_code);
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentals
4Operadores Parte 1
Operadores AritméticosOperador de MóduloAtalhos AritméticosOperadores de ComparaçãoComparação de Strings7Entrada e Saída Básica
Exibindo no ConsoleLendo a Entrada do UsuárioRevisão - Até 120Revisão - Verdadeiro ou Falso5Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 33Variáveis Parte 2
Declaração de TipoConvenções de NomenclaturaInferência de TipoRecapitulação - Inicializar VariáveisConversão de Tipo9Laços
For sobre SériesLaço WhileBreakContinueLaços AninhadosRótulos de LoopLoop InfinitoRecapitulação - Entrada Dinâmica