Rust 字面量与类型指定

RustRustBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习 Rust 中的字面量,以及如何通过添加后缀来指定它们的类型。带后缀的字面量在初始化时就已知其类型,而无后缀的字面量的类型则取决于它们的使用方式。size_of_val 函数用于确定变量以字节为单位的大小,它通过其完整路径 std::mem::size_of_val 来调用。size_of_val 函数在 mem 模块中定义,而 mem 模块又在 std 包中定义。

注意:如果实验未指定文件名,你可以使用任何你想要的文件名。例如,你可以使用 main.rs,并通过 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{{"Rust 字面量与类型指定"}} rust/function_syntax -.-> lab-99296{{"Rust 字面量与类型指定"}} rust/expressions_statements -.-> lab-99296{{"Rust 字面量与类型指定"}} rust/method_syntax -.-> lab-99296{{"Rust 字面量与类型指定"}} end

字面量

数值字面量可以通过添加类型后缀来进行类型注释。例如,要指定字面量 42 的类型为 i32,可以写成 42i32

无后缀数值字面量的类型将取决于它们的使用方式。如果没有约束,编译器会将整数类型推断为 i32,浮点数类型推断为 f64

fn main() {
    // 带后缀的字面量,其类型在初始化时已知
    let x = 1u8;
    let y = 2u32;
    let z = 3f32;

    // 无后缀的字面量,其类型取决于它们的使用方式
    let i = 1;
    let f = 1.0;

    // `size_of_val` 返回变量以字节为单位的大小
    println!("`x` 的字节大小:{}", std::mem::size_of_val(&x));
    println!("`y` 的字节大小:{}", std::mem::size_of_val(&y));
    println!("`z` 的字节大小:{}", std::mem::size_of_val(&z));
    println!("`i` 的字节大小:{}", std::mem::size_of_val(&i));
    println!("`f` 的字节大小:{}", std::mem::size_of_val(&f));
}

前面的代码中使用了一些尚未解释的概念,以下是为心急的读者提供的简要解释:

  • std::mem::size_of_val 是一个函数,但通过其 完整路径 来调用。代码可以被拆分为称为 模块 的逻辑单元。在这种情况下,size_of_val 函数在 mem 模块中定义,而 mem 模块又在 std 中定义。有关更多详细信息,请参阅模块和包。

总结

恭喜你!你已经完成了字面量实验。你可以在 LabEx 中练习更多实验来提升你的技能。