通用编程概念
变量与可变性
1 | // 错误 |
1 | // 正确 |
变量与常量
常量(constant),常量在绑定值以后也是不可变的,但是它与不可变的变量有很多区别
不可以使用mut,常量永远都是不可变
声明常量使用const,它的类型必须被标注
常量可以在任何作用域内进行声明,包括全局作用域
常量只可以绑定到常量表达式,无法绑定到函数的调用结果或只能在运行时才能计算出的值
在程序运行期间,常量在其声明的作用域内一直有效
命名规范:Rust里常量使用全大写字母,每个单词之间用下划线分开
数据类型
标量类型
- 整数类型
- 没有小数部分
- 无符号整数类型以u开头
- u8
- u32
- u64
- u128
- usize
- 有符号整数类型以i开头
- i8
- i32
- i64
- i128
- isize
- 有符号范围
- -(2^n - 1)到2^(n - 1) - 1s
- 无符号范围
- 0到2^n - 1
- 除了byte类型外,所有的数值字面值都允许使用类型后缀
- 例如:57u8
- u32是默认类型
- 浮点类型
- Rust有两种基础的浮点类型,含有小数部分的类型
- f32,32位,单精度
- f64,64位,双精度
- Rust浮点类型使用了IEEE-754标准来表述
- f64是默认类型,因为在现代CPU上f64和f32的速度差不多,而且精度更高
- Rust有两种基础的浮点类型,含有小数部分的类型
- 布尔类型
- 字面值true、false
- bool
- 字符类型
- 字符类型的字面值使用单引号
- 占用4字节大小
- 是Unicode标量值,可以表示比ASCII多得多的字符内容:拼音、中日韩文、零长度空白字符,emoji表情等
- U+0000到U+D7FF
复合类型
元祖(Tuple)
多个类型的多个值放在一个类型里
长度是固定的,声明之后无法修改
let tup: (i32, f64, u8) = (500, 6.4, 1); println!("{} {} {}", tup.0, tup.1, tup.2);
* 可以使用点标记来访问1
2
3
4
5
6
7
8
9
10
11
* 获取Tuple元素值
* 可以使用模式匹配来解构
```rust
let tup: (i32, f64, u8) = (500, 6.4, 1);
let (x, y, z) = tup;
println!("{} {} {}", x, y, z);1
2
3let tup: (i32, f64, u8) = (500, 6.4, 1);
println!("{} {} {}", tup.0, tup.1, tup.2);
数组
声明数组
在中括号里,各值用逗号分开
1
2
3
4let a = [1, 2, 3, 4, 5];
// [类型; 长度]
let b: [i32; 5] = [1, 2, 3, 4, 5];
用处
- 如果想让你的数据存放在stack上而不是heap上,或者想保证有固定数量的元素,这时使用数组更有好处
数组没有Vector灵活
函数
注释
控制流
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 EvilChan!