3.Rust数据类型

Rust数据类型

Rust 每个值都有其确切的数据类型,总的来说可以分为两类:基本类型和复合类型。

基本数据类型

Rust是一个强类型语言与js不同,我们在声明变量时就要指定该变量的类型,编译器必须在编译期知道我们所有变量的类型。当然大多时聪明的编译器可以自动推导类型,但为了保证代码质量和可读性建议还是定义好类型。
基本类型意味着它们往往是一个最小化原子类型,无法解构为其它类型(一般意义上来说),基本数据类型由以下组成:

  • 数值类型: 有符号整数 (i8, i16, i32, i64, isize)、 无符号整数 (u8, u16, u32, u64, usize) 、浮点数 (f32, f64)、以及有理数、复数
  • 字符串:字符串字面量和字符串切片 &str
  • 布尔类型: true和false
  • 字符类型: 表示单个 Unicode 字符,存储为 4 个字节
  • 单元类型: 即 () ,其唯一的值也是 ()

整数类型

整数是没有小数部分的数字。之前使用过的 i32 类型,表示有符号的 32 位整数( i 是英文单词 integer 的首字母,与之相反的是 u,代表无符号 unsigned 类型)。下表显示了 Rust 中的内置的整数类型:

长度 有符号类型 无符号类型
8位 i18 u8
16位 i16 u16
32位 i32 u32
64位 i64 u64
128位 i128 u128
视计算机CPU类型而定 isize usize

isize 和 usize 的主要应用场景是用作集合的索引。
整形字面量可以用下表的形式书写:

数字字面量 示例
十进制 98_222
十六进制 0xff
八进制 0o77
二进制 0b1111_0000
字节 (仅限于 u8) b’A’

对于整形来说,Rust默认使用i32类型,例如let num = 11num的类型为i32

浮点类型

浮点类型数字 是带有小数点的数字,在 Rust 中浮点类型数字也有两种基本类型: f32f64,分别为 32 位和 64 位大小。默认浮点类型是 f64,在现代的 CPU 中它的速度与 f32 几乎相同,但精度更高。
示例

fn main() {
    let x = 5.0; // f64

    let y: f32 = 1.0; // f32
}

序列

Rust 提供了一个非常简洁的方式,用来生成连续的数值,例如 1…6,生成从 1 到 4 的连续数字,不包含 6 ;1…=6,生成从 1 到 5 的连续数字,包含 6,它的用途很简单,常常用于循环中:

for i in 1..=6 {
    println!("{}",i);
}

序列只允许用于数字或字符类型,原因是:它们可以连续,同时编译器在编译期可以检查该序列是否为空,字符和数字值是 Rust 中仅有的可以用于判断是否为空的类型。如下是一个使用字符类型序列的例子:

字符类型

字符可以把它理解为英文中的字母,中文中的汉字。Rust 的字符不仅仅是 ASCII,所有的 Unicode 值都可以作为 Rust 字符,包括单个的中文、日文、韩文、emoji 表情符号等等,都是合法的字符类型。关于Unicode参考文章
由于 Unicode 都是 4 个字节编码,因此字符类型也是占用 4 个字节:
Rust 的字符只能用 ‘’ 来表示, “” 是留给字符串的。

fn main() {
    let x = '余';
    println!("{}",std::mem::size_of_val(&x)); // 4 
}

bool类型

Rust 中的布尔类型有两个可能的值:true false,布尔值占用内存的大小为 1 个字节:

fn main() {
let ok = true;

let pass: bool = false; // 使用类型标注,显式指定f的类型

if ok{
  //.....
}

}

使用布尔类型的场景主要在于流程控制.

单元类型

单元类型可以理解为一个站位的类型。什么意思?main函数大家都知道,这个函数返回什么呢?这种没有实际返回值的函数在Rust中称为“发散函数”,例如println!()也是一样。

相关推荐

  1. 3.Rust数据类型

    2024-03-10 08:34:01       39 阅读
  2. Rust - 数据类型

    2024-03-10 08:34:01       37 阅读
  3. Rust-10-数据类型

    2024-03-10 08:34:01       25 阅读
  4. Rust基本数据类型-字符串

    2024-03-10 08:34:01       38 阅读
  5. Rust入门篇:数据类型

    2024-03-10 08:34:01       124 阅读
  6. Rust练习】2.数值类型

    2024-03-10 08:34:01       29 阅读
  7. Rust 学习笔记 - 详解数据类型

    2024-03-10 08:34:01       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 08:34:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 08:34:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 08:34:01       82 阅读
  4. Python语言-面向对象

    2024-03-10 08:34:01       91 阅读

热门阅读

  1. 【C++ 学习】C++ 传值 传指针 传引用

    2024-03-10 08:34:01       39 阅读
  2. 防抖与节流

    2024-03-10 08:34:01       39 阅读
  3. Lua 脚本语言基础语法及应用

    2024-03-10 08:34:01       35 阅读
  4. HTML:用对 preload、prefetch提升网页加载速度

    2024-03-10 08:34:01       42 阅读
  5. 计算机等级考试:信息安全技术 知识点一

    2024-03-10 08:34:01       44 阅读
  6. Go语言:一门简洁高效的编程语言

    2024-03-10 08:34:01       39 阅读
  7. jupyter notebook

    2024-03-10 08:34:01       40 阅读
  8. Golang中处理map和list的初始化问题

    2024-03-10 08:34:01       39 阅读