#1、概述
从这期开始,我会以实际项目的形式,分享个人学习 Rust 语言的过程。期间,我不会讲太多语法知识,需要各位看官自行查阅文档😄。
开始前,需具备 Rust 环境(我用的是当前最新版本
1.77.2
),可看上一篇文章:Rust 安装与版本更新。
#2、前期准备
#2.1、安装 RustRover
笔者 IDE 使用的是 JetBrains 出品的 RustRover,除了吃内存,没有什么缺点🙂。通常,我们可以用以下方式安装 RustRover:
- 在官网下载对应平台的安装包,傻瓜式安装
- 安装 JetBrains Toolbox,在工具里面点击安装
#2.2、新建项目
我们的项目名称为
rust-journey
,使用 monorepo 结构进行项目开发,Cargo Workspaces 对此提供良好的支持。
项目创建后,我们需要修改自动生成的
Cargo.toml
内容,删除原有配置,并键入如下信息:
[workspace]
resolver = "2"
members = []
如果使用默认配置,会报
no targets specified in the manifest
的错误。
至此,我们的工作空间就创建成功,下一步,需要新建子项目(包)。本文的项目是一个简单的猜数字游戏,取名为
j01_number_game
,Rust 建议使用下划线小写字母的组合😄。
熟悉 CLI (命令行界面)的朋友,可以直接在根目录,执行
cargo new j01_number_game
。或者在 IDE 中右键项目,选择
New->Cargo Crate
,在弹出对话框键入包名即可。
工程结构如下:
#2.3、配置 Git
仓库地址:https://github.com/0604hx/rust-journey,同时配置
.gitignore
文件:
# Generated by Cargo# will have compiled files and executables
debug/
target/
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock
# These are backup files generated by rustfmt
**/*.rs.bk
# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb
#3、项目实施
j01_number_game
实现一个经典的新手编程问题,猜猜看游戏:程序将会随机生成一个 1 到 100 之间的随机整数;接着它会请玩家猜一个数并输入,然后提示猜测是大了还是小了;如果猜对了,它会打印祝贺信息并退出;共有 5 次猜测机会。
#3.1、程序流程
#3.2、核心代码
usestd::cmp::Ordering;usestd::io;userand::Rng;fnmain(){println!("欢迎来到 Rust 版猜数字游戏");//创建随机数let secret =rand::thread_rng().gen_range(1..=100);letmut limit =5;println!("游戏开始(可尝试 {limit} 次),请输入你猜测的数字:");loop{letmut guess =String::new();io::stdin().read_line(&mut guess).expect("读取用户输入失败");let guess:u32=match guess.trim().parse(){Ok(num)=> num,Err(e)=>{println!("数值转换出错 {:?}", e);continue}};match secret.cmp(&guess).reverse(){Ordering::Less=>{println!("你猜的是 {guess} ,小了点噢,再猜下:")}Ordering::Greater=>{println!("你猜的是 {guess} ,大了点噢,再猜下:")}Ordering::Equal=>{println!("恭喜,猜对了 O(∩_∩)O");break}}
limit -=1;if limit <=0{println!("没有可用次数,游戏结束,你没有获得胜利 =.=");break}}}
程序运行效果
#4、小结
对于习惯了 Java、JavaScript 这类语言的我,刚刚开始接触 Rust 语法,着实有点犯怵,觉得哪哪都别扭😂,需要一定的适应时间。
目前算是入门了🎉,下一步将进行 IO 操作。
版权归原作者 集成显卡 所有, 如有侵权,请联系我们删除。