Menu
Coddy logo textTech

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: 30

Você 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: 25

Você 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 third

Você 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"
challenge icon

Desafio

Fácil

Crie 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);
}
quiz iconTeste seus conhecimentos

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