青少年编程与数学 02-019 Rust 编程基础 02课题、开始编程
- 一、游戏规则
- 二、实现步骤
-
- [1. 创建项目](#1. 创建项目)
- [2. 编写代码](#2. 编写代码)
- [3. 添加依赖](#3. 添加依赖)
- [4. 运行程序](#4. 运行程序)
- 三、代码解析
- [四、println! 的用法](#四、println! 的用法)
- 五、管理多个项目
-
- [1. 创建 Workspace](#1. 创建 Workspace)
- [2. 创建成员项目](#2. 创建成员项目)
-
- 使用命令行创建项目
- [在 RustRover 中创建项目](#在 RustRover 中创建项目)
- [3. 配置 Cargo.toml](#3. 配置 Cargo.toml)
- [4. 添加依赖](#4. 添加依赖)
- [5. 构建和运行项目](#5. 构建和运行项目)
- [6. 在 RustRover 中管理项目](#6. 在 RustRover 中管理项目)
- [7. 提交到版本控制](#7. 提交到版本控制)
-
- [初始化 Git 仓库](#初始化 Git 仓库)
- 添加文件并提交
- 项目管理小结
- 总结:学习要点
**摘要:**编写一个猜数游戏是一个非常棒的方式来熟悉 Rust 编程语言。这个项目可以帮助你了解 Rust 的基本语法、控制流、输入输出以及随机数生成等核心概念。这是一个简单的猜数游戏的实现步骤和代码示例。
**关键词:**代码示例、Hello, world!
一、游戏规则
- 程序随机生成一个 1 到 100 之间的整数。
- 用户尝试猜测这个数字。
- 程序根据用户的输入给出提示:
- 如果用户猜的数字太小,提示"Too small!"。
- 如果用户猜的数字太大,提示"Too big!"。
- 如果用户猜对了,提示"Congratulations! You got it!"并结束程序。
- 用户可以不断猜测,直到猜对为止。
二、实现步骤
1. 创建项目
首先,通过命令行工具,使用 Cargo 创建一个新的 Rust 项目:
bash
cargo new guess_number_game
cd guess_number_game
2. 编写代码
使用RustRover打开新建的项目目录。
打开 src/main.rs
文件,并将以下代码粘贴进去:
rust
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
文件中添加依赖(代码粘贴时会弹窗询问):
toml
[dependencies]
rand = "0.9.0" # 确保使用最新版本
4. 运行程序
打开RustRover中的终端,在项目目录下运行以下命令:
bash
cargo run
程序会启动并提示用户输入猜测的数字,根据用户的输入给出相应的提示,直到猜对为止。
也可以点击代码中的运行按钮或者RustRover窗口顶端的运行按钮。
运行过程如下:
C:/RUST/CARGO/bin/cargo.exe run --color=always --package guess_number_game --bin guess_number_game --profile dev
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.02s
Running `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!
的基本语法如下:
rust
println!("文本内容");
-
在双引号中直接写上要输出的文本内容即可。
-
例如:
rustprintln!("Hello, world!");
输出:
Hello, world!
使用占位符
println!
支持使用占位符来动态插入变量的值。常见的占位符包括:
{}
:用于插入任意类型的值,Rust 会自动调用Display
trait 来格式化输出。{:?}
:用于插入任意类型的值,Rust 会调用Debug
trait 来格式化输出,通常用于调试。{:e}
、{:b}
、{:x}
等:用于以特定格式输出数字,分别表示科学计数法、二进制和十六进制。
示例
rust
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.
对于调试输出:
rust
let data = vec![1, 2, 3];
println!("{:?}", data);
输出:
[1, 2, 3]
对于格式化数字:
rust
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$
:指定输出的精度(对于浮点数)。
示例
rust
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
输出多个变量
可以一次性输出多个变量,只需要在占位符后按顺序传入对应的变量即可。
示例
rust
let a = 10;
let b = 20;
println!("a = {}, b = {}", a, b);
输出:
a = 10, b = 20
注意事项
-
换行 :
println!
会在输出后自动换行。如果不想换行,可以使用print!
宏。rustprint!("This is a line"); print!("This is still the same line"); println!(); // 手动换行
输出:
This is a lineThis is still the same line
-
调试用途 :如果只是为了调试,可以使用
eprintln!
宏,它会将输出重定向到标准错误输出(stderr),而不是标准输出(stdout)。rusteprintln!("This is a debug message");
-
类型限制 :使用
{}
占位符时,变量必须实现了Display
trait;使用{:?}
占位符时,变量必须实现了Debug
trait。
小结
println!
是 Rust 中非常方便的输出工具,通过占位符和格式化选项,可以灵活地输出各种内容。掌握它的用法可以帮助你更好地调试和展示程序的运行结果。
五、管理多个项目
在 RustRover 中使用 Cargo Workspaces 来同时管理多个项目是一种高效的方式,可以让你更好地组织和维护多个相关的 Rust 项目。以下是详细的步骤,帮助你在 RustRover 中设置和使用 Cargo Workspaces:
1. 创建 Workspace
-
创建根目录 :首先,创建一个根目录来存放你的 Workspace。例如,创建一个名为
my_workspace
的文件夹。 -
初始化 Workspace :在该目录下创建一个
Cargo.toml
文件,配置为 Workspace。内容如下:toml[workspace] members = [ "project1", "project2", # 添加更多项目 ]
2. 创建成员项目
在 Workspace 中,每个成员项目都是一个独立的 Rust 项目。你可以在 RustRover 中创建这些项目,或者通过命令行创建后再导入到 RustRover。
使用命令行创建项目
在 my_workspace
目录下,运行以下命令来创建成员项目:
bash
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
字段包含了所有成员项目的路径。例如:
toml
[workspace]
members = [
"project1",
"project2",
]
4. 添加依赖
在每个成员项目的 Cargo.toml
文件中,可以独立添加依赖。例如,在 project1/Cargo.toml
中添加依赖:
toml
[dependencies]
serde = "1.0"
5. 构建和运行项目
在 RustRover 中,你可以直接构建和运行 Workspace 中的成员项目。
构建所有项目
在 RustRover 的终端中,运行以下命令来构建所有成员项目:
bash
cargo build
构建单个项目
如果你想只构建某个特定的项目,可以使用以下命令:
bash
cargo build -p project1
运行项目
运行某个成员项目时,使用以下命令:
bash
cargo run -p project1
6. 在 RustRover 中管理项目
RustRover 提供了强大的项目管理功能,可以帮助你更方便地操作和维护 Workspace。
查看项目结构
在 RustRover 的项目视图中,你可以清晰地看到 Workspace 的结构,包括所有成员项目。
编辑代码
在 RustRover 中直接编辑代码,并利用其智能提示、代码格式化等功能来提高开发效率。
调试项目
RustRover 支持调试功能,你可以在成员项目中设置断点、单步执行等,方便调试代码。
7. 提交到版本控制
建议将整个 Workspace 提交到版本控制系统(如 Git),以便更好地管理代码版本。
初始化 Git 仓库
在 my_workspace
目录下,运行以下命令初始化 Git 仓库:
bash
git init
添加文件并提交
bash
git add .
git commit -m "Initial commit"
项目管理小结
通过上述步骤,你可以在 RustRover 中使用 Cargo Workspaces 来同时管理多个项目。这种方式不仅可以让项目结构更加清晰,还可以方便地共享依赖和代码,提高开发效率。
总结:学习要点
通过这个项目,你可以学习到以下 Rust 的核心概念:
- 变量和可变性:如何声明和使用变量,以及如何处理可变性。
- 输入输出:如何从标准输入读取数据,并向标准输出打印信息。
- 错误处理:如何处理可能出现的错误(例如用户输入非数字)。
- 控制流 :如何使用
loop
、if
和match
等控制流语句。 - 外部库的使用 :如何引入和使用外部库(如
rand
)。
这个猜数游戏是一个很好的起点,帮助你熟悉 Rust 的基本语法和开发流程。你可以在此基础上进一步扩展功能,例如限制猜测次数、记录猜测次数等。
注意一个问题呀,就是你如果从来没有学过编程,请绕路吧!
至此,前端JavaScript,后端PRG(Python、Rust、Go),就是我推荐的编程语言啦。