Rust 编程语言 - 常见编程概念
阅读Rust程序设计语言笔记
变量和可变性
- 变量默认是不可改变的(immutable)
- 可变变量,需要加 mut 修饰
let mut x = 5
- 常量 使用 const 定义
const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3;
- 需要申明常量类型
- 常量只能被设置为常量表达式,不能是运行时计算出的值 (和变量区别)
- 隐藏,变量遮蔽。重新申明变量,前面申明的变量会隐藏
- 隐藏时,可以改变变量类型
数据类型
- 指定数据类型,或者可以推断出数据类型;
- 标量类型:整型,浮点型,布尔型,字符型
- 整形
- 有符号,无符号
- 8,16,32,64,128,arch 几种长度
- 支持下划线分隔符
- 整形溢出,debug 会panic;release 会忽略高位
- 数字可以加后缀
123u16
16位的数字 123
- 浮点型
- f32,f64;
- IEE-754
- 数值运算
- 整数除法,四舍五入
- bool true|false
- 字符类型
- 四个字节,一个Unicode标量
- 复合类型
- 元组
- 申明后长度不会增大缩小;类型不必相同
- 通过模式匹配解构(destructuring)元组值
- 通过(.) 加索引访问
let x: (i32, i64, f32) = (100, 0, .3)
- 数组
- 长度固定;类型必须相同;
- 不固定长度,需要使用vector 类型(标准库提供)
let a = [1,2,3,4,5]
let a: [i32; 5] = [1,2,3,4,5];
指定类型let a = [3;5]
创建5个3- 访问超出界限,会panic
- 元组
函数
- 加分号是语句,不加分号是表达式(又返回值)
|
|
注释
// 注释
/// 文档注释
控制流
- if 语句
- 条件不用加括号
- 必须bool类型,不能自动转换
- 可以使用let语句赋值
|
|
- 循环 (loop while/for)
- break 中断; 可以带返回值中断
|
|
- 多个循环之间消除歧义
标签 ‘counting_up (这个好诡异)