
1. 项目概述这个猜数游戏项目是《Rust权威指南》中的经典入门示例通过实现一个简单的命令行游戏来学习Rust基础语法。程序会随机生成1-100之间的数字玩家通过输入猜测的数字程序会提示猜测是偏大还是偏小直到猜中为止。2. 环境准备与项目创建2.1 创建新项目使用Cargo创建新项目cargo new guessing_game cd guessing_game2.2 项目结构解析生成的Cargo.toml文件包含项目元数据[package] name guessing_game version 0.1.0 edition 2021 [dependencies]src/main.rs是程序入口初始包含简单的Hello, world!输出。3. 核心功能实现3.1 获取用户输入首先实现基本的用户输入功能use std::io; fn main() { println!(Guess the number!); println!(Please input your guess.); let mut guess String::new(); io::stdin() .read_line(mut guess) .expect(Failed to read line); println!(You guessed: {}, guess); }关键点解析use std::io引入标准库的I/O模块let mut guess声明可变变量String::new()创建新的空字符串read_line方法读取用户输入expect处理可能的错误3.2 添加随机数生成引入rand crate生成随机数修改Cargo.toml添加依赖[dependencies] rand 0.8.3实现随机数生成use rand::Rng; let secret_number rand::thread_rng().gen_range(1..101); println!(The secret number is: {}, secret_number);3.3 比较猜测与答案实现比较逻辑use std::cmp::Ordering; match guess.cmp(secret_number) { Ordering::Less println!(Too small!), Ordering::Greater println!(Too big!), Ordering::Equal println!(You win!), }4. 类型转换与错误处理4.1 字符串转数字将用户输入的字符串转换为数字let guess: u32 guess.trim().parse().expect(Please type a number!);4.2 改进错误处理使用match处理转换错误let guess: u32 match guess.trim().parse() { Ok(num) num, Err(_) continue, };5. 添加游戏循环5.1 实现主游戏循环使用loop关键字创建无限循环loop { // 游戏逻辑 }5.2 添加胜利条件猜中后退出循环Ordering::Equal { println!(You win!); break; }6. 完整代码实现最终完整代码如下use rand::Rng; use std::cmp::Ordering; use std::io; fn main() { println!(Guess the number!); let secret_number rand::thread_rng().gen_range(1..101); 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(_) continue, }; println!(You guessed: {}, guess); match guess.cmp(secret_number) { Ordering::Less println!(Too small!), Ordering::Greater println!(Too big!), Ordering::Equal { println!(You win!); break; } } } }7. 关键概念总结通过本项目学习的Rust核心概念变量声明与可变性(let/mut)标准库和外部crate的使用错误处理(expect/match)模式匹配(match表达式)类型系统和类型转换循环控制(loop/break)8. 扩展练习建议修改数字范围为1-1000添加猜测次数统计实现难度级别选择添加游戏重玩功能将秘密数字输出改为调试模式这个项目虽然简单但涵盖了Rust的许多基础概念是学习系统编程语言的绝佳起点。通过实际编码可以更好地理解所有权、类型系统等Rust特有概念。