Skip to main content

Interpolação de String no Rust | Rust

  • Interpolação de String no Rust | Rust

Visão Geral

Rust não possui interpolação de string no formato ${variavel} como JavaScript ou C#.
A linguagem utiliza macros de formatação, que oferecem controle explícito e seguro sobre a construção de strings.

As principais macros envolvidas são:

  • format! → cria uma String
  • println! → imprime no stdout
  • eprintln! → imprime no stderr
  • write! / writeln! → escreve em buffers

Formatação Básica com {}

A forma mais comum de interpolação é através de {}:

let name = "Adolfo";
let age = 30;

let message = format!("Nome: {}, Idade: {}", name, age);

println!("{}", message);

Cada {} corresponde a um argumento na ordem declarada.


Argumentos Nomeados

Para melhorar legibilidade:

let name = "Adolfo";
let age = 30;

let message = format!("Nome: {name}, Idade: {age}");

Vantagens:

  • Mais claro em strings grandes
  • Evita erros de ordem
  • Mais próximo de interpolação moderna

Debug Formatting

Para structs e tipos complexos, use {:?}.

#[derive(Debug)]
struct User {
name: String,
}

let user = User { name: "Ana".into() };

println!("{:?}", user); // Debug simples
println!("{:#?}", user); // Debug formatado

{:#?} melhora a leitura visual (pretty print).


Formatação Numérica

Casas decimais

let value = 10.4567;
println!("{:.2}", value); // 10.46

Padding

println!("{:05}", 42); // 00042

Alinhamento

println!("{:<10}", "Rust"); // alinhado à esquerda
println!("{:>10}", "Rust"); // alinhado à direita
println!("{:^10}", "Rust"); // centralizado

Diferença entre format! e println!

format!

  • Retorna String
  • Aloca memória
let s = format!("Produto {} criado", 10);

println!

  • Não retorna String
  • Apenas imprime
println!("Produto {} criado", 10);

Use format! apenas quando precisar armazenar o resultado.


Uso com JSON (Exemplo em Backend)

Exemplo comum em APIs com Actix:

use actix_web::HttpResponse;

let field = "name";

HttpResponse::BadRequest().json(serde_json::json!({
"message": format!("Campo {} é obrigatório", field)
}));

Aqui a interpolação é usada antes da serialização JSON.


Erro Comum

Isto não funciona:

let name = "Ana";
let s = "Olá {name}"; // ❌

Strings literais não realizam interpolação automática.
Sempre utilize macros de formatação.


Especificadores de Formatação

EspecificadorDescrição
{}Display padrão
{:?}Debug
{:#?}Debug formatado
{:.2}Precisão decimal
{:05}Padding com zeros