Objetivos
Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.
Macros
A linguagem Rust possui um conjunto de macros nativas que ajudam no desenvolvimento de nossos
programas escritos nessa linguagem. Nesta parte vamos ver as macros mais comuns utilizadas
para diferentes fins:
- print!
- println!
- format!
- eprintln!
- eprint!
- todo!
- unimplemented
- dgb!
- unreachable!
- matches!
- outras
println!
A macro println! já foi vista em saída de dados. Essa macro é utilizada para exibir informações
na saída padrão. Ver saída de dados.
Sintaxe:
println!(string_formatada, <argumentos>)
Exemplo 1
fn main()
{
println!("Olá!");
println!("Valor: {}", 999);
}
Saída
Olá
Valor: 999
Semelhante à macro println!, mas não imprime uma nova linha após a exibição do(s) argumento(s).
Ver saída de dados.
Sintaxe:
print!(string_formatada, <argumentos>)
Exemplo 2
fn main()
{
print!("Uma string");
print!(" {}", "rústica");
}
Saída
Uma string rústica
Essa macro é utilizada para criar uma string formatada com suporte a caracteres de escape,
argumentos indexados e outros recursos. Ver
formatação de dados.
Sintaxe:
format!(string_formatada,<argumentos>);
Exemplo 3
fn main()
{
let _str = format!("Olá, {}!", "nome_usuario");
println!("{}",_str)
}
Saída
Olá, nome_usuario
Semelhante à macro println!, mas a informação é exibida na saída padrão de erro(stderror).
Essa macro pode ser usada para debug, por exemplo.
Sintaxe:
eprintln!(string_formatada, <argumentos>)
Exemplo 4
fn main()
{
eprintln!("Erro: ");
eprintln!("método não implementado");
}
Saída
Erro:
Método não implementado
Semelhante à eprintln!, mas não imprime uma nova linha após a exibição dos argumentos.
Sintaxe:
eprint!(string_formatada, <argumentos>)
Exemplo 5
fn main()
{
eprint!("Erro: ");
eprint!("método não implementado");
}
Saída
Erro: Método não implementado
Com essas macros, podemos indicar ou marcar um local no código como não implementado ou que
precisa ser implementado. Um panic(erro) é gerado exibindo uma mensagem que é passada
como argumento para as macros.
Sintaxe:
todo!(mensagem);
unimplemented!(mensagem);
Caso uma mensagem não seja passada como argumento, "not yet implemented" será exibida para
todo! e "not implemented" será exibida para unimplemented!.
Exemplo 6
fn funcao()
{
todo!(); //comentar
}
fn main()
{
funcao();
}
Saída
thread 'main' (13) panicked at src/main.rs:3:3:
not yet implemented
Exemplo 7
fn funcao()
{
unimplemented!("o estagiário deve implementar");
}
fn main()
{
funcao();
}
Saída
thread 'main' (43) panicked at src/main.rs:4:3:
not implemented: o estagiário deve implementar
file!, line!, column! e module_path!
As macros file!, line!, column! e module_path! retornam as informações: nome do arquivo,
linha, coluna e caminho do módulo para log ou debug, por exemplo.
Sintaxe:
file!()
line()!
column!()
module_path!()
Retorno:
file!: &'static str contendo nome do arquivo
module_path!: &'static str contendo caminho completo do módulo
line!: i32 contendo número da linha
column!: i32 contendo número da coluna
Exemplo 6
fn main()
{
println!("arq: {} => linha: {}, coluna: {}",file!(), line!(), column!());
}
Saída
arq: src/main.rs => linha: 3, coluna: 65
Histórico de atualizações
- 16/08/2026 - versão inicial: println!, print!, format!, eprintln!, eprint! , todo/unimplemented e file!/line!
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.