学习rust_day01

Rust官网:https://www.rust-lang.org

更新Rust:

1
rustup update

卸载Rust:

1
rustup self uninstall

验证是否安装Rust成功:

1
rustc --version

Rust本地文档:

1
rustup doc

Rust源代码文件名为:.rs

Hello World测试代码:

1
2
3
4
fn main()	//定义main函数
{
println!("Hello World!"); //println!()中“!”代表这是一个宏,作用是输出一行括号中的内容,“;”用于结尾
}

编译Rust程序:

1
rustc 你的文件名.rs

Cargo作为Rust的构建系统和包管理工具,将会默认随着Rust安装,检查你的Cargo:

1
cargo --version

使用Cargo创建项目:

1
cargo new 项目名称

这种方法创建的项目默认包含src文件夹,作用是存放源代码文件。

Cargo.toml作用是说明项目信息([package]以下的内容)以及需求的依赖项名([dependencies]以下的内容)也叫crate(货箱),货箱类似Python中的包或者C中的头文件。

使用Cargo构建可执行文件:

1
cargo build

一般在路径target/debug/下。此时格外会生成cargo.lock文件用于追踪项目依赖的精确版本,最好不要手动管理。

使用Cargo构建并运行文件:

1
cargo run

使用Cargo检查代码是否能通过编译(比直接编译速度快):

1
cargo check

使用Cargo为发布程序构建:

1
cargo build --release

一般生成结果会在target/release下。

给你的Rust添加需要的crate(货箱):

网址:https://crates.io/crates/

例如:

1
2
3
4
5
6
7
[package]
name = "guess"
version = "0.1.0"
edition = "2024"

[dependencies]
rand = "0.3.14" #这是你添加的依赖,格式:依赖名 = 版本号

原地升级你的crate:

1
cargo update

这种方法会升级你的crate到当前大版本的最新小版本比如0.3.14[old] -> 0.3.99[new],忽略你在[dependencies]中写的指定版本。但是不会改变大版本。

Rust语法

定义变量与赋值:

1
2
3
4
let A = 1;	//此时我定义了一个变量A,该变量只能在被定义时赋予初值,后续不能在对其进行赋值操作。
let mut B = 2; //如果需要解除该限制,则需要加上mut。默认情况下只有let的变量是不可变的。
A = 2; //非法且不能通过编译。
B = 1; //合法且能通过编译。

输入与输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use std::io;	//可以看做C++的namespace替身

fn main()
{
println!("输入一行文字:");
//println!()中“!”代表这是一个宏而不是函数,作用是输出一行括号中的内容,“;”用于结尾。
let mut text = String::new();
//String可以看做是一个对象,通过::调用其中内部的函数,这里的new()创建一个空字符串。
io::stdin().read_line(&mut text).expect("无法读取行!");
//io::stdin().read_line()这里可以看做固定组合X^X,用于输入,&mut中"&"是引用,和取地址概念是不同的,加上mut的原因是
//&符号在Rust中默认指向不可变变量。而expect()函数则会在前面的函数遇到未知错误导致执行失败时终止程序并输
//出错误信息。
println!("你的输入是:{}", text);
//{}作为输出占位符,老朋友了。
}

match {} 语法

xxxxxxxxxx let arr: [i32; 3] = [1, 2, 3]; //标明数组的类型与数组长度。let a = [3; 5]; //快速创建数组包含5个3。let first = arr[0]; //访问数组的元素。rust

作用是通过函数的返回值执行特定的分支。

1
2
3
4
5
6
7
8
let text: u32 = match text.trim().parse()	//该语句执行成功后会返回Ok,否则返回Err。
{
Ok(num) => num, //当返回Ok时将会完成赋值操作,“=>”是必须要写的,就是等号加右尖括号。
Err(_) => { //当返回Err时输出错误提示或也可以执行其他修复错误的操作。
println!("请输入纯数字,重新输入!");
continue;
},
};

使用Rust写一个猜数字游戏:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use std::io;
use std::cmp::Ordering; //给后面使用比较函数做准备
use rand::Rng; //给随机函数做准备

fn main() {
println!("猜测数字!");
let secret_number = rand::thread_rng().gen_range(1, 101); //看做固定搭配就成
// println!("神秘数字是:{}", secret_number);

loop //作用相当于while True,但是也许更安全?
{
println!("输入你猜测的数字:");
let mut guess = String::new();
io::stdin().read_line(&mut guess).expect("无法读取行!");
println!("你猜测的数字是:{}", guess);

let guess: u32 = match guess.trim().parse() //trim()尝试去掉前后空格和回车,parse()尝试转换为数值
//这里的u32写法相当于重新指定变量类型为无符号32位整形。
{
Ok(num) => num,
Err(_) => {
println!("请输入纯数字,重新输入!");
continue;
},
};

match guess.cmp(&secret_number) //比较函数和他的三个返回值。
{
Ordering::Less => println!("输入的数字太小了!"),
Ordering::Greater => println!("输入的数字太大了!"),
Ordering::Equal => {
println!("输入的数字刚刚好!");
break;
},
};
}

}

学习rust_day01
https://zlsf-zl.github.io/2026/02/27/学习rust-day01/
作者
ZLSF
发布于
2026年2月27日
许可协议