Tipos compuestos
Tipos | Literales | |
---|---|---|
Arrays | [T; N] | [20, 30, 40] , [0; 3] |
Tuplas | () , (T,) , (T1, T2) , … | () , ('x',) , ('x', 1.2) , … |
Asignación y acceso a arrays:
fn main() { let mut a: [i8; 10] = [42; 10]; a[5] = 0; println!("a: {:?}", a); }
Asignación y acceso a tuplas:
fn main() { let t: (i8, bool) = (7, true); println!("1st index: {}", t.0); println!("2nd index: {}", t.1); }
Puntos clave:
Arrays:
-
Un valor del tipo array
[T; N]
contieneN
(una constante en tiempo de compilación) elementos del mismo tipoT
. Ten en cuenta que la longitud del array es parte de su tipo, lo que significa que[u8; 3]
y[u8; 4]
se consideran dos tipos diferentes. -
Podemos usar literales para asignar valores a arrays.
-
En la función main, la instrucción de impresión solicita la implementación de depuración con el parámetro de formato
?
:{}
ofrece la salida predeterminada y{:?}
ofrece la salida de depuración. También se podría haber usado{a}
y{a:?}
sin especificar el valor después de la cadena de formato. -
Si se añade
#
, por ejemplo{a:#?}
, se da formato al texto para facilitar la lectura.
Tuplas:
-
Al igual que los arrays, las tuplas tienen una longitud fija.
-
Las tuplas agrupan valores de diferentes tipos en un tipo compuesto.
-
Se puede acceder a los campos de una tupla por el punto y el índice del valor, por ejemplo,
t.0
,t.1
. -
La tupla vacía
()
también se conoce como “tipo unitario”. Es a la vez un tipo y el único valor válido de ese tipo, es decir, tanto el tipo como su valor se expresan como()
. Se usa para indicar, por ejemplo, que una función o expresión no tiene valor de retorno, como veremos en una diapositiva posterior.- Podríamos pensar en ello como
void
, que quizá resulte familiar de otros lenguajes de programación.
- Podríamos pensar en ello como