青少年编程与数学 02-019 Rust 编程基础 02课题、开始编程
- 一、游戏规则
 - 二、实现步骤
 - 1. 创建项目
 - 2. 编写代码
 - 3. 添加依赖
 - 4. 运行程序
 
- 三、代码解析
 - 四、println! 的用法
 - 基本用法
 - 使用占位符
 - 示例
 - 控制输出宽度和精度
 - 示例
 
- 输出多个变量
 - 示例
 
- 注意事项
 - 小结
 
- 五、管理多个项目
 - 1. 创建 Workspace
 - 2. 创建成员项目
 - 使用命令行创建项目
 - 在 RustRover 中创建项目
 
- 3. 配置 Cargo.toml
 - 4. 添加依赖
 - 5. 构建和运行项目
 - 构建所有项目
 - 构建单个项目
 - 运行项目
 
- 6. 在 RustRover 中管理项目
 - 查看项目结构
 - 编辑代码
 - 调试项目
 
- 7. 提交到版本控制
 - 初始化 Git 仓库
 - 添加文件并提交
 
- 项目管理小结
 
- 总结:学习要点
 
**摘要:**编写一个猜数游戏是一个非常棒的方式来熟悉 Rust 编程语言。这个项目可以帮助你了解 Rust 的基本语法、控制流、输入输出以及随机数生成等核心概念。这是一个简单的猜数游戏的实现步骤和代码示例。
**关键词:**代码示例、
Hello, world!
一、游戏规则
- 程序随机生成一个 1 到 100 之间的整数。
 - 用户尝试猜测这个数字。
 - 程序根据用户的输入给出提示: 
- 如果用户猜的数字太小,提示“Too small!”。
 - 如果用户猜的数字太大,提示“Too big!”。
 - 如果用户猜对了,提示“Congratulations! You got it!”并结束程序。
 
 - 用户可以不断猜测,直到猜对为止。
 
二、实现步骤
1. 创建项目
首先,通过命令行工具,使用 Cargo 创建一个新的 Rust 项目:
cargo new guess_number_game
cd guess_number_game
 
2. 编写代码
使用RustRover打开新建的项目目录。
打开 src/main.rs 文件,并将以下代码粘贴进去:
use std::io; // 引入标准库中的 I/O 模块
use rand::Rng; // 引入 rand 库,用于生成随机数fn main() {println!("Guess the number!");// 生成一个 1 到 100 之间的随机数let secret_number = rand::rng().random_range(1..=100);println!("The secret number is: {}", secret_number); // 仅用于调试,实际游戏中应注释掉loop {println!("Please input your guess:");// 创建一个可变字符串变量,用于存储用户输入let mut guess = String::new();// 从标准输入读取一行文本io::stdin().read_line(&mut guess).expect("Failed to read line");// 将用户输入的字符串转换为数字let guess: u32 = match guess.trim().parse() {Ok(num) => num,Err(_) => {println!("Please type a number!");continue;}};println!("You guessed: {}", guess);// 比较用户输入和随机数match guess.cmp(&secret_number) {std::cmp::Ordering::Less => println!("Too small!"),std::cmp::Ordering::Greater => println!("Too big!"),std::cmp::Ordering::Equal => {println!("Congratulations! You got it!");break;}}}
} 
3. 添加依赖
为了使用 rand 库生成随机数,需要在 Cargo.toml 文件中添加依赖(代码粘贴时会弹窗询问):
[dependencies]
rand = "0.9.0"  # 确保使用最新版本
 
4. 运行程序
打开RustRover中的终端,在项目目录下运行以下命令:
cargo run
 
程序会启动并提示用户输入猜测的数字,根据用户的输入给出相应的提示,直到猜对为止。
也可以点击代码中的运行按钮或者RustRover窗口顶端的运行按钮。
运行过程如下:
C:/RUST/CARGO/bin/cargo.exe run --color=always --package guess_number_game --bin guess_number_game --profile devFinished `dev` profile [unoptimized + debuginfo] target(s) in 0.02sRunning `target\debug\guess_number_game.exe`
Guess the number!
The secret number is: 9
Please input your guess:
88
You guessed: 88
Too big!
Please input your guess:
3
You guessed: 3
Too small!
Please input your guess:
9
You guessed: 9
Congratulations! You got it!进程已结束,退出代码为 0
 
三、代码解析
-  
引入模块和库:
use std::io;:引入标准库中的 I/O 模块,用于处理输入输出。use rand::Rng;:引入rand库的Rng特质,用于生成随机数。
 -  
生成随机数:
let secret_number = rand::rng().random_range(1..=100);:使用rand库生成一个 1 到 100 之间的随机数。
 -  
读取用户输入:
let mut guess = String::new();:创建一个可变字符串变量,用于存储用户输入。io::stdin().read_line(&mut guess):从标准输入读取一行文本,并存储到guess中。
 -  
处理用户输入:
- 使用 
trim()方法去除输入字符串的首尾空白字符。 - 使用 
parse()方法将字符串转换为数字。如果转换失败(例如用户输入的不是数字),捕获错误并提示用户重新输入。 
 - 使用 
 -  
比较和提示:
- 使用 
cmp方法比较用户输入的数字和随机数,并根据比较结果给出相应的提示。 
 - 使用 
 
四、println! 的用法
println! 是 Rust 中一个非常常用的宏,用于在控制台输出内容并换行。以下是关于 println! 的详细用法:
基本用法
println! 的基本语法如下:
println!("文本内容");
 
- 在双引号中直接写上要输出的文本内容即可。
 - 例如:
输出:println!("Hello, world!");Hello, world! 
使用占位符
println! 支持使用占位符来动态插入变量的值。常见的占位符包括:
{}:用于插入任意类型的值,Rust 会自动调用Displaytrait 来格式化输出。{:?}:用于插入任意类型的值,Rust 会调用Debugtrait 来格式化输出,通常用于调试。{:e}、{:b}、{:x}等:用于以特定格式输出数字,分别表示科学计数法、二进制和十六进制。
示例
let name = "Alice";
let age = 25;
println!("My name is {} and I am {} years old.", name, age);
 
输出:
My name is Alice and I am 25 years old.
 
对于调试输出:
let data = vec![1, 2, 3];
println!("{:?}", data);
 
输出:
[1, 2, 3]
 
对于格式化数字:
let num = 255;
println!("Decimal: {}, Binary: {:b}, Hex: {:x}, Octal: {:o}", num, num, num, num);
 
输出:
Decimal: 255, Binary: 11111111, Hex: ff, Octal: 377
 
控制输出宽度和精度
println! 还可以通过指定宽度和精度来控制输出格式:
{:width$}:指定输出的最小宽度。:.precision$:指定输出的精度(对于浮点数)。
示例
let pi = 3.141592653589793;
println!("Pi with 3 decimal places: {:.3}", pi);
println!("Pi with width 10: {:10}", pi);
 
输出:
Pi with 3 decimal places: 3.142
Pi with width 10:       3.141592653589793
 
输出多个变量
可以一次性输出多个变量,只需要在占位符后按顺序传入对应的变量即可。
示例
let a = 10;
let b = 20;
println!("a = {}, b = {}", a, b);
 
输出:
a = 10, b = 20
 
注意事项
- 换行:
println!会在输出后自动换行。如果不想换行,可以使用print!宏。
输出:print!("This is a line"); print!("This is still the same line"); println!(); // 手动换行This is a lineThis is still the same line - 调试用途:如果只是为了调试,可以使用 
eprintln!宏,它会将输出重定向到标准错误输出(stderr),而不是标准输出(stdout)。eprintln!("This is a debug message"); - 类型限制:使用 
{}占位符时,变量必须实现了Displaytrait;使用{:?}占位符时,变量必须实现了Debugtrait。 
小结
println! 是 Rust 中非常方便的输出工具,通过占位符和格式化选项,可以灵活地输出各种内容。掌握它的用法可以帮助你更好地调试和展示程序的运行结果。
五、管理多个项目
在 RustRover 中使用 Cargo Workspaces 来同时管理多个项目是一种高效的方式,可以让你更好地组织和维护多个相关的 Rust 项目。以下是详细的步骤,帮助你在 RustRover 中设置和使用 Cargo Workspaces:
1. 创建 Workspace
- 创建根目录:首先,创建一个根目录来存放你的 Workspace。例如,创建一个名为 
my_workspace的文件夹。 - 初始化 Workspace:在该目录下创建一个 
Cargo.toml文件,配置为 Workspace。内容如下:[workspace] members = ["project1","project2",# 添加更多项目 ] 
2. 创建成员项目
在 Workspace 中,每个成员项目都是一个独立的 Rust 项目。你可以在 RustRover 中创建这些项目,或者通过命令行创建后再导入到 RustRover。
使用命令行创建项目
在 my_workspace 目录下,运行以下命令来创建成员项目:
cargo new project1
cargo new project2
 
在 RustRover 中创建项目
- 打开 RustRover,选择 
File -> Open,打开my_workspace文件夹。 - 在 
my_workspace文件夹中,右键点击空白处,选择New -> Cargo Crate。 - 输入项目名称(如 
project1),选择项目类型(如Binary或Library),然后点击Create。 
3. 配置 Cargo.toml
确保 my_workspace/Cargo.toml 文件中的 members 字段包含了所有成员项目的路径。例如:
[workspace]
members = ["project1","project2",
]
 
4. 添加依赖
在每个成员项目的 Cargo.toml 文件中,可以独立添加依赖。例如,在 project1/Cargo.toml 中添加依赖:
[dependencies]
serde = "1.0"
 
5. 构建和运行项目
在 RustRover 中,你可以直接构建和运行 Workspace 中的成员项目。
构建所有项目
在 RustRover 的终端中,运行以下命令来构建所有成员项目:
cargo build
 
构建单个项目
如果你想只构建某个特定的项目,可以使用以下命令:
cargo build -p project1
 
运行项目
运行某个成员项目时,使用以下命令:
cargo run -p project1
 
6. 在 RustRover 中管理项目
RustRover 提供了强大的项目管理功能,可以帮助你更方便地操作和维护 Workspace。
查看项目结构
在 RustRover 的项目视图中,你可以清晰地看到 Workspace 的结构,包括所有成员项目。
编辑代码
在 RustRover 中直接编辑代码,并利用其智能提示、代码格式化等功能来提高开发效率。
调试项目
RustRover 支持调试功能,你可以在成员项目中设置断点、单步执行等,方便调试代码。
7. 提交到版本控制
建议将整个 Workspace 提交到版本控制系统(如 Git),以便更好地管理代码版本。
初始化 Git 仓库
在 my_workspace 目录下,运行以下命令初始化 Git 仓库:
git init
 
添加文件并提交
git add .
git commit -m "Initial commit"
 
项目管理小结
通过上述步骤,你可以在 RustRover 中使用 Cargo Workspaces 来同时管理多个项目。这种方式不仅可以让项目结构更加清晰,还可以方便地共享依赖和代码,提高开发效率。
总结:学习要点
通过这个项目,你可以学习到以下 Rust 的核心概念:
- 变量和可变性:如何声明和使用变量,以及如何处理可变性。
 - 输入输出:如何从标准输入读取数据,并向标准输出打印信息。
 - 错误处理:如何处理可能出现的错误(例如用户输入非数字)。
 - 控制流:如何使用 
loop、if和match等控制流语句。 - 外部库的使用:如何引入和使用外部库(如 
rand)。 
这个猜数游戏是一个很好的起点,帮助你熟悉 Rust 的基本语法和开发流程。你可以在此基础上进一步扩展功能,例如限制猜测次数、记录猜测次数等。
注意一个问题呀,就是你如果从来没有学过编程,请绕路吧!
至此,前端JavaScript,后端PRG(Python、Rust、Go),就是我推荐的编程语言啦。