首页/新闻资讯/正文详情

Rust入门实战:猜数游戏开发指南

发布时间:2026/9/27 17:57:54 来源:云帆数科 栏目:资讯中心
Rust入门实战:猜数游戏开发指南
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特有概念。

相关推荐

深入解析DDR控制器寄存器:从PI/PHY分工到AM62L实战调试
深入解析DDR控制器寄存器:从PI/PHY分工到AM62L实战调试

1. 项目概述:为什么我们需要深入理解DDR控制器寄存器?在嵌入式系统开发,尤其是基于高性能SoC(如TI的AM62L Sitara™系列)的设计中,DDR内存子系统的稳定性和性能往往是项目成败的关键。你可能遇到过这样的场… · 2026/9/3 23:38:03

Topic Statistics实战指南:从词频统计到主题建模的范式跃迁
Topic Statistics实战指南:从词频统计到主题建模的范式跃迁

1. 项目概述:这不是简单的词频统计,而是理解内容生态的底层罗盘“Topic statistics”——看到这个词组,很多人第一反应是“不就是做个词云、跑个TF-IDF、导出个Excel表格?”我带过六支内容分析团队,做过三十七个垂直领… · 2026/9/15 14:47:59

rsync文件同步工具:高效备份与差异传输技术详解
rsync文件同步工具:高效备份与差异传输技术详解

1. rsync备份工具的核心价值rsync作为一款开源文件同步工具,其核心价值在于差异传输算法(delta-transfer algorithm)。这个算法让它在处理大文件或大量小文件时,相比传统的scp或cp命令有着显著优势。我曾在一次服务器迁移中实测对… · 2026/9/18 5:27:04

新手入门避坑:手机网站用二级目录做的弊端及备案真相
新手入门避坑:手机网站用二级目录做的弊端及备案真相

新手入门避坑:手机网站用二级目录做的弊端及备案真相 很多新手在搭建手机网站时,为了省事直接把页面塞进二级目录,结果备案卡壳、收录惨淡。备案流程一头雾水?别慌,今天把坑一次讲透。 手机网站用二级目录做,备案到底卡在哪? 很多初学者以为… · 2026/9/27 17:57:47

Claude Code 装了一堆 Skill,用了三个月,我删掉了 80%:一份 settings.json 与 SKILL.md 的取舍清单
Claude Code 装了一堆 Skill,用了三个月,我删掉了 80%:一份 settings.json 与 SKILL.md 的取舍清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 17:57:47

扬州网站建设图解步骤:拒绝拖更,5天搞定上线
扬州网站建设图解步骤:拒绝拖更,5天搞定上线

扬州网站建设图解步骤:拒绝拖更,5天搞定上线 改个按钮颜色,建站公司让你等一周?这种“慢吞吞”的交付节奏,是扬州本地很多甲方老板最头疼的噩梦。你以为他们技术不行,其实多半是流程不透明,把简单的事搞复杂了。今天不整虚的,直接拆解… · 2026/9/27 17:57:47

不会代码做推广站?这份网络营销产品推广方案对比评测太真实
不会代码做推广站?这份网络营销产品推广方案对比评测太真实

不会代码做推广站?这份网络营销产品推广方案对比评测太真实 想靠网站做网络营销产品推广,但对着黑框框里的代码发呆?别慌,这是90%运营新手的死穴。 很多湖北的同行问我,不懂技术怎么落地一套完整的 网络营销产品推广方案… · 2026/9/27 17:57:34

Trae 智能旅行助手:多 MCP 服务整合下的出行规划效率提升实战
Trae 智能旅行助手:多 MCP 服务整合下的出行规划效率提升实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 17:57:22

DeepSeek Harness从零入门指南:用TaoToken统一Key接入AI编程助手
DeepSeek Harness从零入门指南:用TaoToken统一Key接入AI编程助手

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 17:57:22

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码