Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. into
  2. try_into
  3. try_form
  4. str hex <-> int
  5. int <-> bin
  6. Erros Result

Rust utiliza POO: Traits que devem ser implementadas para que a conversão entre os tipos de dados possam ser realizadas. Os tipos primitivos de dados já possuem suporte às traits de conversão.

Nesta parte vamos ver as macros mais comuns e métodos comuns que podem ser utilizados na conversão de dados:

  1. format!
  2. to_string
  3. from_string
  4. parse
  5. from
  6. into
  7. try_into
  8. try_from

A forma mais simples de conversão de tipos de dados primitivos para string é feita utilizando a macro format! como exemplificado logo abaixo.

Sintaxe:
format!(string_formatada, <argumentos>)
Retorno:
String contendo <argumentos> convertidos
Exemplo 1
fn main() 
{  
    //format!
    let booleano = true;
    println!("{:?}",format!("{}", booleano)); // "true"
    println!("{:?}",format!("{:0>5}", 123)); 
}
Saída
"true"
"123"

Outra forma de conversão de tipos primitivos para o tipo String é utilizando o método to_string como mostrado na sintaxe abaixo:

Sintaxe:
nome_variavel.to_string()
Retorno:
String contendo nome variável convertido para string
Exemplo 2
fn main() 
{
    //to_string
    let num1 = 10; //i8, i16  ou i32
    let num2 = 1.99; //f16 ou f32
    
    println!("{}", num1.to_string()); //inteiro
    println!("{}", num2.to_string()); //float
    println!("{}", true.to_string()); //float
}
Saída
10
1.99
true

O método from_str é usado para converter String ou &str(slice) para outro tipo de dado primitivo de destino. Esse método retorna um Result<T, E>, pois o parse durante a conversão pode falhar.

Sintaxe
tipo_destino::from_str(&variavel_string)
Onde
variavel_string: string contendo valor para conversão
tipo_destino: tipo de dado de destino
Retorno
Result<tipo_destino, tipo_erro> contendo Ok com valor convertido ou Err contendo erro ocorrido.
Exemplo 3
use std::str::FromStr;

fn main() 
{
    //FromString
    let num2 = "1.99"; //f16, f32
    
    let res = f32::from_str(&num2); //inteiro
    
    match res {
        Ok(val) => println!("{}", val), 
        Err(err) => println!("{}", err),
    }
}
Saída
1.99
  1. 16/08/2026 - versão inicial: format!, to_string e from_str