Literales y especificación de tipos en Rust

RustRustBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprendemos sobre los literales en Rust y cómo especificar sus tipos agregando un sufijo. Los literales con sufijo tienen sus tipos conocidos en la inicialización, mientras que los tipos de los literales sin sufijo dependen de cómo se usan. La función size_of_val se utiliza para determinar el tamaño de una variable en bytes, y se llama con su ruta completa, std::mem::size_of_val. La función size_of_val está definida en el módulo mem, que a su vez está definido en el crat std.

Nota: Si el laboratorio no especifica un nombre de archivo, puede usar cualquier nombre de archivo que desee. Por ejemplo, puede usar main.rs, compilar y ejecutarlo con rustc main.rs &&./main.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/DataStructuresandEnumsGroup(["Data Structures and Enums"]) rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/DataStructuresandEnumsGroup -.-> rust/method_syntax("Method Syntax") subgraph Lab Skills rust/variable_declarations -.-> lab-99296{{"Literales y especificación de tipos en Rust"}} rust/function_syntax -.-> lab-99296{{"Literales y especificación de tipos en Rust"}} rust/expressions_statements -.-> lab-99296{{"Literales y especificación de tipos en Rust"}} rust/method_syntax -.-> lab-99296{{"Literales y especificación de tipos en Rust"}} end

Literales

Los literales numéricos pueden ser anotados con su tipo agregando el tipo como sufijo. Por ejemplo, para especificar que el literal 42 debe tener el tipo i32, escriba 42i32.

El tipo de los literales numéricos sin sufijo dependerá de cómo se usen. Si no existe ninguna restricción, el compilador usará i32 para enteros y f64 para números de punto flotante.

fn main() {
    // Literales con sufijo, sus tipos son conocidos en la inicialización
    let x = 1u8;
    let y = 2u32;
    let z = 3f32;

    // Literales sin sufijo, sus tipos dependen de cómo se usan
    let i = 1;
    let f = 1.0;

    // `size_of_val` devuelve el tamaño de una variable en bytes
    println!("tamaño de `x` en bytes: {}", std::mem::size_of_val(&x));
    println!("tamaño de `y` en bytes: {}", std::mem::size_of_val(&y));
    println!("tamaño de `z` en bytes: {}", std::mem::size_of_val(&z));
    println!("tamaño de `i` en bytes: {}", std::mem::size_of_val(&i));
    println!("tamaño de `f` en bytes: {}", std::mem::size_of_val(&f));
}

Hay algunos conceptos usados en el código anterior que no se han explicado todavía, aquí está una breve explicación para los lectores impacientes:

  • std::mem::size_of_val es una función, pero se llama con su ruta completa. El código se puede dividir en unidades lógicas llamadas módulos. En este caso, la función size_of_val está definida en el módulo mem, y el módulo mem está definido en el crate std. Para obtener más detalles, consulte módulos y crates.

Resumen

¡Felicidades! Has completado el laboratorio de Literales. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.