Photo by Sebastián Silva on Unsplash
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
to127
8-bit unsigned
keyword:
u8
range:
0
to255
16-bit signed
keyword:
i16
range:
-32768
to32767
16-bit unsigned
keyword:
u16
range:
0
to65535
32-bit signed
keyword:
i32
range:
-2147483648
to2147483647
32-bit unsigned
keyword:
u32
range:
0
to4294967295
64-bit signed
keyword:
i64
range:
-9223372036854775808
to9223372036854775807
64-bit unsigned
keyword:
u64
range:
0
to18446744073709551615
128-bit signed
keyword:
i128
range:
-170141183460469231731687303715884105728
to170141183460469231731687303715884105727
128-bit unsigned
keyword:
u128
range:
0
to340282366920938463463374607431768211455
Arch
keyword:
isize
ouusize
range: valor pode variar baseado na arquitetura, sendo de 32 ou 64 bits.
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 😁