|
|
|
|
@ -2,13 +2,24 @@
|
|
|
|
|
|
|
|
|
|
当一门语言不谈类型时,你得小心,这大概率是动态语言(别拍我,我承认是废话)。但是把类型大张旗鼓的用多个章节去讲的,Rust 是其中之一。
|
|
|
|
|
|
|
|
|
|
Rust 每个值都有其确切的数据类型,总的来说可以分为两类:基本类型和复合类型。 基本类型意味着它们往往是一个最小化原子类型,无法解构为其它类型(一般意义上来说),由以下组成:
|
|
|
|
|
Rust 每个值都有其确切的数据类型,总的来说可以分为两类:基本类型和复合类型。基本类型意味着它们往往是一个最小化原子类型,无法解构为其它类型(一般意义上来说),由以下组成:
|
|
|
|
|
|
|
|
|
|
- **数值类型**:
|
|
|
|
|
- 有符号整数:`i8`, `i16`, `i32`, `i64`, `i128`, `isize`
|
|
|
|
|
- 无符号整数:`u8`, `u16`, `u32`, `u64`, `u128`, `usize`
|
|
|
|
|
- 浮点数:`f32`(单精度), `f64`(双精度,默认)
|
|
|
|
|
|
|
|
|
|
> **注意**:
|
|
|
|
|
> `isize` 和 `usize` 的大小取决于目标平台的指针大小(32 位平台为 4 字节,64 位平台为 8 字节)
|
|
|
|
|
|
|
|
|
|
- **字符串切片**:`&str`
|
|
|
|
|
|
|
|
|
|
- **布尔类型**:`true` 和 `false`
|
|
|
|
|
|
|
|
|
|
- **字符类型**:`char` 表示单个 Unicode 字符(存储为 4 字节),如 `'A'`, `'中'`, `'😻'`
|
|
|
|
|
|
|
|
|
|
- **单元类型**:`()`,其唯一可能的值也是 `()`
|
|
|
|
|
|
|
|
|
|
- 数值类型:有符号整数 (`i8`, `i16`, `i32`, `i64`, `isize`)、 无符号整数 (`u8`, `u16`, `u32`, `u64`, `usize`) 、浮点数 (`f32`, `f64`)、以及有理数、复数
|
|
|
|
|
- 字符串:字符串字面量和字符串切片 `&str`
|
|
|
|
|
- 布尔类型:`true` 和 `false`
|
|
|
|
|
- 字符类型:表示单个 Unicode 字符,存储为 4 个字节
|
|
|
|
|
- 单元类型:即 `()` ,其唯一的值也是 `()`
|
|
|
|
|
|
|
|
|
|
## 类型推导与标注
|
|
|
|
|
|
|
|
|
|
|