当前位置: 首页 > 文档资料 > 通过例子学 Rust >

类型转换 - 字面量

优质
小牛编辑
134浏览
2023-12-01

数字字面量可以加上类型标记作为后缀来标注类型。举个例子,要指定字面量 42i32 类型,可以写成 42i32

未加上后缀的数字字面量的类型视使用它们的情况而定。如果没有限定,编译器会将整型定为 i32 类型,将浮点数定为 f64 类型。

  1. fn main() {
  2. // 有后缀的字面量,它们的类型在初始化时就确定
  3. let x = 1u8;
  4. let y = 2u32;
  5. let z = 3f32;
  6. // 无后缀的字面量,它们的类型视使用情况而定
  7. let i = 1;
  8. let f = 1.0;
  9. // `size_of_val` 返回变量的大小,以字节(byte)为单位
  10. println!("size of `x` in bytes: {}", std::mem::size_of_val(&x));
  11. println!("size of `y` in bytes: {}", std::mem::size_of_val(&y));
  12. println!("size of `z` in bytes: {}", std::mem::size_of_val(&z));
  13. println!("size of `i` in bytes: {}", std::mem::size_of_val(&i));
  14. println!("size of `f` in bytes: {}", std::mem::size_of_val(&f));
  15. }

前面代码中用了一些尚未解释过的概念,这里列出一些简短的说明:

  • fun(&foo)通过引用传参给一个函数,而不是通过值来传参(fun(foo))。更多内容参见
    借用(borrowing)。
  • std::mem::size_of_val 是一个函数,不过是通过完整的路径调用的。代码可以划分到称为
    模块(module)的逻辑单元中。在这个例子中,size_of_val 函数是定义在 mem 模块的,
    mem 模块是定义在 std 包(crate)中。更多内容参考模块 和 crate。