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

  1. Casting Integer
  2. Casting Enum
  3. sizeof
  4. identificar tipo
  5. perda de dados
  6. Outros métodos

A linguagem Rust, semelhante a muitas outras, permite o casting entre seus tipos numéricos primitivos 8, 16, 32 e 64 bits. O assunto casting foi visto também em Tutorial C: Casting.

Os tipos de dados com uma menor capacidade de dados podem ser implicitamente "convertidos" para dados com maior capacidade de armazenamento, desde que sejam do mesmo tipo, sem perda de dados.

Casting
i8 > i16 > i61 > i32
f32 > f64
Onde
> : sentido do casting

Para isso, o método into deve ser utilizando na variável de origem com menor tamanho de dados como mostrado no exemplo abaixo:

Sintaxe
nome_var1 = nome_var2.into()
Exemplo 1
fn main() {

    let valor8:i8 = 8;
    let valor16:i16 = valor8.into();
}
Saída
-

Ao tentarmos realizar o casting um tipo de dado de maior armazenamento para um tipo de dado com menor armazenamento, é necessário utilizar a palavra reservada as, que realiza o casting explícito. Lembrando que nesses casos há perda de dados.

Casting entre tipos de dados sinalizadas e não sinalizados também necessitam do uso da palavra reservada as.

Sintaxe
nome_var1 = nome_var2 as <tipo_destino>
Onde
<tipo_destino>: tipo de dado para qual desejamos fazer a conversão
as: operador de conversão explícita
Exemplo 2
fn main() {

    //i16 p/ i8 usando "as"
    let valor16:i16 = 512;
    let mut valor8:i8 = valor16 as i8;
    
    //i8 p/ u8
    let valor1:i8 = 10;
    let mut valoru8:u8 = valor1 as u8;
    
    //char p/ i8,u8
    let valorChar:char = 'Z';
    let mut valor2:i8 = valorChar as i8;
    let mut valor3:u8 = valorChar as u8;
}
Saída
-

O tipo enum foi visto de básica em Tipos de Dados podendo ser visto com mais detalhes em Rust: Enum.

Para itens de um enumerador, o casting deve ser feito para o tipo de dado isize como mostrado na sintaxe abaixo:

Sintaxe
let nome_variavel = nome_enum::<nome_item> as isize;
Exemplo 3
enum MeuEnum 
{
    Opcao1, //0
    Opcao2, //1
    Opcao3 //2
}

fn main()
{
    println!("{}", MeuEnum::Opcao1 as isize);
    println!("{}", MeuEnum::Opcao2 as isize);
    println!("{}", MeuEnum::Opcao3 as isize);
}

Saída
0
1
2
  1. 12/11/2025 - versão inicial