Rust实战 | 用 RustRover 开发猜数字游戏

2024-04-20 05:36

本文主要是介绍Rust实战 | 用 RustRover 开发猜数字游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#1、概述

从这期开始,我会以实际项目的形式,分享个人学习 Rust 语言的过程。期间,我不会讲太多语法知识,需要各位看官自行查阅文档😄。

开始前,需具备 Rust 环境(我用的是当前最新版本1.77.2),可看上一篇文章:Rust 安装与版本更新。

#2、前期准备

#2.1、安装 RustRover

笔者 IDE 使用的是 JetBrains 出品的 RustRover,除了吃内存,没有什么缺点🙂。通常,我们可以用以下方式安装 RustRover:

  1. 在官网下载对应平台的安装包,傻瓜式安装
  2. 安装 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、核心代码

use std::cmp::Ordering;
use std::io;
use rand::Rng;fn main() {println!("欢迎来到 Rust 版猜数字游戏");//创建随机数let secret = rand::thread_rng().gen_range(1..=100);let mut limit = 5;println!("游戏开始(可尝试 {limit} 次),请输入你猜测的数字:");loop {let mut 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 操作。

这篇关于Rust实战 | 用 RustRover 开发猜数字游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/919391

相关文章

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

rust 中的 EBNF简介举例

《rust中的EBNF简介举例》:本文主要介绍rust中的EBNF简介举例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 什么是 EBNF?2. 核心概念3. EBNF 语法符号详解4. 如何阅读 EBNF 规则5. 示例示例 1:简单的电子邮件地址

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

C#实现高性能Excel百万数据导出优化实战指南

《C#实现高性能Excel百万数据导出优化实战指南》在日常工作中,Excel数据导出是一个常见的需求,然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈,下面我们看看C#如何结合EPPl... 目录一、技术方案核心对比二、各方案选型建议三、性能对比数据四、核心代码实现1. MiniExcel

一文教你如何解决Python开发总是import出错的问题

《一文教你如何解决Python开发总是import出错的问题》经常朋友碰到Python开发的过程中import包报错的问题,所以本文将和大家介绍一下可编辑安装(EditableInstall)模式,可... 目录摘要1. 可编辑安装(Editable Install)模式到底在解决什么问题?2. 原理3.

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与