Rust day01 安装-变量-数据类型-函数-控制语句

2025/9/14 22:00 - 2025/9/14 23:00

参考资料 章节1-3

Rust 程序设计语言 - Rust 程序设计语言 中文版

安装

[安装 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或false
let _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));

posted on 2025-09-14 22:56  依只  阅读(5)  评论(0)    收藏  举报

导航