Rust day01 安装-变量-数据类型-函数-控制语句
2025/9/14 22:00 - 2025/9/14 23:00
参考资料 章节1-3
安装
[安装 Rust](https://www.rust-lang.org/zh-CN/tools/install)https://zhuanlan.zhihu.com/p/655386777
变量与可变性
可变变量与不可变变量
+ Rust中变量默认是不可变的(immutable) + 使用 mut 关键字声明可变变量 + 变量类型可自动推断// 声明可变变量
let mut x = 5;
println!("The value of x is: {}", x);
// 变量赋值(类型不可改变)
x = 6;
println!("The value of x is: {}", x);
// 不可变变量(不能再次赋值)
let y = 10;
println!("The value of y is: {}", y);
// y = 11; 会报错
变量遮蔽(Shadow)
+ 可以使用相同的变量名重新声明变量,这称为变量遮蔽 + 新变量会遮蔽旧变量let x = 5;
let x = x * x; // 遮蔽前一个x
println!("The value of x is: {}", x);
作用域
+ 代码块 {} 内的变量有自己的作用域 + 离开作用域后,内部变量失效,外部变量恢复let x = 5;
{
let x = x + 1; // 内部作用域的x,值为6
println!("The value of x is: {}", x);
}
println!("The value of x is: {}", x); // 回
到外部作用域,x还是5
常量
+ 使用 const 关键字声明常量 + 必须指明类型 + 可以在任何作用域中声明 + 命名约定:全大写,下划线分隔const THREE_HOURS_IN_SECONDS: u32 = 60 * 60
* 3;
println!("The value of
THREE_HOURS_IN_SECONDS is: {}",
THREE_HOURS_IN_SECONDS);
数据类型(基础类型)
整数类型
+ 有符号整数:i8、i16、i32、i64、i128 + 无符号整数:u8、u16、u32、u64、u128 + 架构相关整数:isize、usize(跟随操作系统)let _i32_max: i16 = i16::MAX;
let _money: i32 = 1_000_000; // 可以使用下划线避免unused检查
浮点类型
+ f32:单精度浮点数 + f64:双精度浮点数(默认)let _f32_max: f32 = f32::MAX;
布尔类型
+ bool:只能是true或falselet _true: bool = true;
let _false: bool = false;
字符类型
+ char:表示单个Unicode字符 + 使用单引号 + 可以表示中文、表情符号等let _c = 'z';
let _z = 'ℤ';
let _heart_eyed_cat = '😻';
元组(Tuple)复合类型
+ 可以包含不同类型的值 + 长度固定 + 可以通过模式匹配或索引访问元素let tup = (500, 6.4, 1);
// 模式匹配解构
let (_x, _y, _z) = tup;
// 索引访问
let _e1 = tup.0;
let _e2 = tup.1;
let _e3 = tup.2;
数组(Array) 复合类型
+ 所有元素类型必须相同 + 长度固定 + 声明方式: [类型; 长度]// 声明并初始化数组
let mut _array: [i32; 5] = [1, 2, 3, 4, 5];
// 初始化所有元素为相同值
let _array = [3; 5]; // 5个元素全是3
// 声明空数组
let _empty_array: [i32; 0] = [];
// 访问数组元素
let _first = _array[0];
let _second = _array[1];
运算符
Rust支持常见的数学运算符:// 加法
let _sum = 5 + 10;
// 减法
let _difference = 95.5 - 4.3;
// 乘法
let _product = 4 * 30;
// 除法(浮点数除法)
let _quotient = 56.7 / 32.2;
// 整数除法(向下取整)
let _floored = 2 / 3; // 结果为0
// 取余
let _remainder = 43 % 5;
函数
函数定义
+ 使用 fn 关键字定义函数 + 参数必须声明类型 + 返回值类型使用 -> 指定 + 如果函数最后一行是表达式,可以省略分号,作为返回值fn plus_more_one(x: i32, y: i32) -> i32 {
// 块作用域内的表达式返回值
let z = {
let x1 = 1;
x1 // 这个表达式的值作为z的值
};
x + y + z // 函数的返回值
}
函数调用
// 调用函数
let res = plus_more_one(_array[0], _array[1]);
流程控制语句
if/else条件表达式
+ 条件表达式不需要括号 + 可以作为表达式赋值给变量let condition = true;
let _number = if condition { 5 } else { 6 };
循环 for循环
+ 常用于迭代集合 + 不再使用C风格的 for (int i=0; i<10; i++) + 推荐使用迭代器let a: [i32; 5] = [10, 20, 30, 40, 50];
for number in a.iter().rev() { // iter()获取迭代器,rev()翻转顺序
println!("{}!", number);
}
while
+ 和其他语言while一样用法let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}
loop
+ 无限循环,需要手动break + 可以在break时返回值let mut counter = 0;
let _result = loop {
counter += 1;
if counter == 10 {
break counter * 2; // 返回值
}
};
其他
+ 变量名前加下划线 _ 可以忽略未使用变量的警告let _unused_variable = 42;
- 线程休眠
std::thread::sleep(std::time::Duration::from_secs(2));
浙公网安备 33010602011771号