Rust Variables and Data Types
变量和可变性
变量
在Rust中,变量默认是不可变的,可以通过在变量前增加mut
关键字使其可变。
|
|
常量
常量是绑定到一个常量名且不允许更改的值。
|
|
常量与不可变变量的区别:
- 常量使用
const
关键字声明;- 常量声明必须使用类型标注;
- 常量可以在任意作用域内声明,包括全局作用域,且在声明的作用域内始终有效;
- 常量只能设置常量表达式,不能设置函数或运行计算结果。
遮蔽
声明和已有变量具有相同名称的新变量叫遮蔽,使用let
关键字来遮蔽变量。
|
|
遮蔽与
mut
关键字的区别:
- 遮蔽可以修改变量的可变性;
- 遮蔽可以修改变量的类型。
数据类型
Rust 的每个值都有确切的数据类型,同时Rust又是一种静态类型语言,即在编译期就能推断出所有变量的类型。
标量类型
标量类型表示单个值,Rust有4个基本的标量类型:整型、浮点型、布尔型和字符。
整型
整型是指没有小数的数字类型,Rust的整型分为有符号整型和无符号整型,分别以i
和u
表示。
长度 | 有符号类型 | 无符号类型 |
---|---|---|
8 bit | i8 |
u8 |
16 bit | i16 |
u16 |
32 bit | i32 |
u32 |
64 bit | i64 |
u64 |
128 bit | i128 |
u128 |
arch | isize |
usize |
数字范围
- 有符号整型:-(2n - 1) ~ 2n - 1 - 1
- 无符号整型:0 ~ 2n - 1
isize
和usize
类型取决于程序运行的计算机体系结构(32位或64位)。
整型字面量:
- 当数字可能属于多种类型时,使用类型后缀来指定类型;
- 可以使用
_
作为可视分隔符以方便阅读。
数字字面量 | 示例 |
---|---|
二进制 | 0b1111_0000 |
八进制 | 0o77 |
十进制 | 10_000 |
十六进制 | 0xff |
字节(仅限于u8 ) |
b'A' |
浮点类型
Rust 的浮点型有两种,f32
和默认的f64
,它们的大小分别为32位和64位,所有的浮点型都是有符号的。
|
|
数字运算
Rust的所有数字类型都支持基本数学运算。
|
|
布尔类型
布尔类型有两个值:true
和false
,使用bool
进行声明,布尔值大小为1个字节。
|
|
字符类型
字符类型采用char
声明,使用单引号括起来,字符类型大小为4个字节,表示的是一个Unicode标量值。
|
|
复合类型
复合类型可以将多个值组合成一个类型,元组合数组是rust中两个基本的复合类型。
元组类型
元组是将多种类型组合成为一种复合类型的方式,其长度在声明之后不可变。
|
|
元组可以使用模式匹配的方式来解构,从而获取某一个值。
|
|
也可以通过句点后跟索引(从0
开始)的方式来访问元素。
|
|
没有任何值的元组 ()
是一种特殊的类型,只有一个值,写为 ()
。该类型被称为单元类型,该值被称为单元值。如果表达式不返回任何其他值,就隐式地返回单元值。
数组类型
数组可以将多个值组合在一起,但要求元素的类型是相同的,数组具有相同的类型。
|
|
数组可以使用方括号进行声明,指定元素类型和元素数。
|
|
也可以在声明时指定值来初始化。
|
|
数组通过中括号加索引(从0
开始)的方式访问元素。
|
|
参考链接:Rust 通用编程概念