Aprendendo Rust: Types

Um resumo de quais são e como são os tipos na linguagem

A linguagem Rust é estáticamente tipada e tem como fundamento muito forte o uso de memória eficiente, por isso precisamos entender de maneira muito clara seus tipos e quais dados são pertinentes aos tipos.

Este post é um resumo traduzido dos conceitos que você pode encontrar no livro, que é gratuito: The Rust Programming Language

Escalar Types

Tipos escalares, são representados por um único valor, nessa categoria de tipos existem 4: integers, floating-point, booleans, and characters.

Integer Types

Tipos inteiros, são números que não são fracionados, podem ser diferenciados por sua categoria de sinal, signed e unsigned,

  • signed: significa que o tipo pode ser positivo ou negativo.

  • unsigned: significa que o número será obrigatóriamente positivo iniciando a partir do zero.

Além do sinal do inteiro, também temos o tamanho do mesmo onde representa o espaço ocupado na memória e os valores possíveis

  • 8-bit signed

    • keyword: i8

    • range: -128 to 127

  • 8-bit unsigned

    • keyword: u8

    • range: 0 to 255

  • 16-bit signed

    • keyword: i16

    • range: -32768 to 32767

  • 16-bit unsigned

    • keyword: u16

    • range: 0 to 65535

  • 32-bit signed

    • keyword: i32

    • range: -2147483648 to 2147483647

  • 32-bit unsigned

    • keyword: u32

    • range: 0 to 4294967295

  • 64-bit signed

    • keyword: i64

    • range: -9223372036854775808 to 9223372036854775807

  • 64-bit unsigned

    • keyword: u64

    • range: 0 to 18446744073709551615

  • 128-bit signed

    • keyword: i128

    • range: -170141183460469231731687303715884105728 to 170141183460469231731687303715884105727

  • 128-bit unsigned

    • keyword: u128

    • range: 0 to 340282366920938463463374607431768211455

  • Arch

Floating-Point Type

Além da lista de inteiros citados, a linguagem também implementa dois tipos de pontos flutuantes, números com pontos decimais, f32 ou f64 ambos são signed.

f32 representa um ponto flutuante de 32 bits

f64 representa um ponto flutuante de 64 bits

Entretanto f64 é mais preciso e tem a mesma velocidade que o f32 portanto é recomendado somente o uso de f64.

The Boolean Type

O tipo boleano, é representado por bool e ocupa apenas 1 byte.

The Character Type

O tipo caracter, é representado por char, significa um valor alfabético e ocupa 4 bytes representando o Unicode Scalar Value.

Compound Types

Os tipos compostos, podem agrupar vários valores em um tipo. Rust tem dois tipos compostos primitivos: tuples e arrays.

The Tuple Type

Uma tupla, é uma maneira geral de agrupar vários valores com uma variedade de tipos em um tipo composto. As tuplas têm um comprimento fixo: uma vez declaradas, elas não podem crescer ou diminuir de tamanho.

Criamos uma tupla escrevendo uma lista de valores separados por vírgula entre parênteses. Cada posição na tupla tem um tipo, e os tipos dos diferentes valores na tupla não precisam ser os mesmos.

  • Definição

    • let tup: (i32, f64, u8) = (500, 6.4, 1);
  • Extração

    • let (x, y, z) = tup;

The Array Type

Outra maneira de ter uma coleção de vários valores é com um vetor. Ao contrário de uma tupla, cada elemento de uma matriz deve ter o mesmo tipo. Ao contrário das matrizes em algumas outras linguagens, as matrizes em Rust têm um comprimento fixo.

  • Definição

    • let a = [1, 2, 3, 4, 5];
  • Tipagem

    • let a: [i32; 5] = [1, 2, 3, 4, 5];
  • Acesso

    • a[index]

Por hoje é isso pessoal, vejo vocês no próximo post 😁