rust 分为标量类型和复合类型
标量类型
标量类型就是单个值类型的统称,共有四种
- 整数,和 c 语言类似,默认是 i32 类型。共有 8,16,32,64,128 五种长度,并且还分有符号和无符号两种,还有一个字节字面量,表示方式为
b'X'
,b 后面加上单引号和一个 ASCII 字符,用 u8 类型来表示 - 浮点数,和 c 语言类似,默认是 f64,遵循 IEEE754 标准
- 布尔类型,同 c 语言,占用一个字节,rust 的布尔值可以使用 as 操作符转换为数值类型,false 对应 0,true 对应 1。但数值类型不允许转换为 bool 值。
- 字符类型,这是 rust 特有的一个类型,他占用 4 字节,表示的是一个 Unicode 标量
数值类型之间默认不会隐式转换,如果需要转换数值类型,可手动使用 as
进行转换,并且 as
也主要用于标量类型的数值转换。例如 3_i32 as u8
表示将 i32 类型的截断为 u8 类型。
TIP
整数类型的 128 位长度似乎是 20 年以后拓展出来的,因为我看的书并没有记录这个类型,但电子版存在这类型。
WARNING
字符类型表示的 Unicode 字符尚且存疑,因为不知道和 utf-8 等编码的关系
复合类型
复合类型就是可以把多个值组合到一起的值,rust 有两种基本的复合类型
- 元组,和 Python 元组类似
- 数组,类似类型收紧后的元组,所有的元素都只能保持同一个类型
其他语言必要类型
除了上面讲到的类型,还有一些定义在核心库中的类型,比如
- Slice,即切片类型
- str,即字符串切片类型
- reference,即引用类型
- pointer,即裸指针类型
- fn,即函数指针类型
- ……还有一些不赘述了