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

news2024/9/21 7:46:31

#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 操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1617230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Syncovery for Mac v10.14.3激活版:文件备份和同步工具

Syncovery for Mac是一款高效且灵活的文件备份与同步工具&#xff0c;专为Mac用户设计&#xff0c;旨在确保数据的安全性和完整性。该软件支持多种备份和同步方式&#xff0c;包括本地备份、网络备份以及云备份&#xff0c;用户可以根据实际需求选择最合适的方案。 Syncovery f…

20240416,深拷贝浅拷贝,对象初始化和清理,对象模型和THIS指针

哈哈哈乌龟越狱了 目录 2.5 深拷贝&浅拷贝 2.6 初始化列表 2.7 类对象作为类成员 2.8 静态成员 2.9 成员变量和成员函数分开存储 2.10 THIS指针的用途 2.11 空指针访问成员函数 2.12 COSNT修饰成员函数 2.5 深拷贝&浅拷贝 浅拷贝&#xff1a;简单的赋值拷贝…

12、【装饰器模式】动态地为对象添加新功能

你好&#xff0c;我是程序员雪球。 今天我们来聊聊 23 种设计模式中&#xff0c;一种常见的结构型模式&#xff0c;装饰器模式。聊聊它的设计思想、实现原理&#xff0c;应用场景&#xff0c;以及如何使用。 装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型…

智慧水务是什么样的?如何打造智慧水务大屏?

在信息化和数字化快速发展的今天&#xff0c;智慧水务作为城市供水管理的重要组成部分&#xff0c;正变得越来越重要。智慧水务大屏作为智慧水务系统的可视化核心&#xff0c;不仅提升了水务管理的效率&#xff0c;而且通过数据的实时监控和分析&#xff0c;为决策者提供了强有…

揭秘爬虫技术:助你打开网络数据的大门

在当今信息爆炸的时代&#xff0c;网络上蕴藏着各种宝贵的数据资源&#xff0c;而要想获取这些宝藏&#xff0c;爬虫技术无疑是最为有效的利器之一。今天我将向大家深入探讨爬虫技术的奥秘&#xff0c;并带领大家一起走进这个数据世界的大门。 文章目录 什么是爬虫技术&#xf…

垃圾焚烧发电:从国资到专业公司,运营模式新变革|中联环保圈

近日&#xff0c;云南富源县生活垃圾焚烧发电项目运营管理技术服务招标引发广泛关注&#xff0c;与此同时&#xff0c;众多垃圾焚烧发电项目也纷纷启动了运管工作的招标。值得注意的是这些项目的招标人均为当地国资&#xff0c;且其中多数缺乏项目的运营经验。 在垃圾焚烧发电行…

4个在ArcGIS中可加载的图源分享

数据是GIS的血液。 这里分享4个来自网友分享的图源&#xff0c;该图源可以直接在ArcGIS中打开进行查看。 4个图源分享 你可以先打开ArcMap软件&#xff0c;然后将以下文分拖放到软件中打开即可查看。 4个图源 这4个图源分别为有地名和路网的地形地图、电子地图、有地名和路…

mysql-connector 交叉编译

1.下载 官网选择对应的系统以及版本&#xff0c;这里我用的是6.1.5https://downloads.mysql.com/archives/c-c/ 2.解压 tar -zxvf mysql-connector-c-6.1.5-src.tar.gz 3.先常规编译&#xff08;因为交叉编译的过程中&#xff0c;会用到生成的二进制文件&#xff09; cd m…

Llama3-8B+ LLaMA-Factory 中文微调

Llama3-8B LLaMA-Factory 中文微调 Llama3是目前开源大模型中最优秀的模型之一&#xff0c;但是原生的Llama3模型训练的中文语料占比非常低&#xff0c;因此在中文的表现方便略微欠佳&#xff01; 本教程就以Llama3-8B-Instruct开源模型为模型基座&#xff0c;通过开源程序LL…

深度相机(3D相机)

传统的RGB彩色相机称为2D相机&#xff0c; 只能得到2D的图像信息&#xff0c; 无法得到物体与相机的距离信息&#xff0c;也就是深度信息。 顾名思义&#xff0c; 深度相机除了获取2D信息&#xff0c;还能得到深度信息&#xff0c;也叫RGBD相机&#xff0c; 或3D相机。 顺便提…

人像摄影姿势入门,人像拍照姿势详解

一、资料前言 本套人像摄影资料&#xff0c;大小537.44M&#xff0c;共有17个文件。 二、资料目录 《如何摆出好POSE》.黑面.影印版.pdf 《人像摄影姿势入门》.pdf 《人像摄影技巧》.pdf 《人像摄影摆姿指南》.比尔.赫特尔.扫描版.pdf 《人像摄影摆姿全集》龙文摄影.彩图…

三羟甲基氨基甲烷(TRIS)应用场景广泛 苏州亚科科技是主要供应商

三羟甲基氨基甲烷&#xff08;TRIS&#xff09;应用场景广泛 苏州亚科科技是主要供应商 三羟甲基氨基甲烷&#xff08;TRIS&#xff09;是一种有机化合物&#xff0c;外观为白色晶体&#xff0c;溶于水。三羟甲基氨基甲烷分子结构中含有一个氮原子和三个羟基&#xff0c;反应活…

C语言指针+-整数、指针-指针、指针关系运算、指针和数组、二级指针、指针数组

文章目录 前言一、指针 - 整数二、指针 - 指针三、指针的关系运算四、指针和数组五、二级指针六、指针数组指针数组可以将几个一维数组模拟成二维数组 总结 前言 C语言指针整数、指针-指针、指针关系运算、指针和数组、二级指针、指针数组等介绍&#xff0c;还包括指针数组将几…

UE4_常见动画节点学习_Two Bone IK双骨骼IK

学习资料&#xff0c;仅供参考&#xff01; Two Bone IK 控制器将逆运动&#xff08;IK&#xff09;解算器应用于到如角色四肢等3关节链。 变量&#xff08; HandIKWeight &#xff09;被用于在角色的 hand_l 和 hand_r 控制器上驱动 关节目标位置&#xff08;Joint Target Lo…

无锡日报:用超算系统设计国产民航飞机!“神威”,再显神威!

用国产超算系统 设计国产民用飞机 ✈ 我国推进高水平科技自立自强 又迈出坚实一步 4月19日&#xff0c;来自国内航空领域和计算机领域的专家相聚国家超级计算无锡中心&#xff0c;启动“面向新一代国产超算系统的民用飞机多学科联合设计优化技术与软件”项目&#xff0c;并…

线上剧本杀小程序开发,未来行业的发展趋势?

当下&#xff0c;剧本杀成为了大众最喜欢的娱乐方式之一&#xff0c;作为以沉浸式为主的剧本杀正成为新时代下的发展潮流。 数据显示&#xff0c;剧本杀行业已达到了百亿元。面对发展迅猛的剧本杀市场&#xff0c;越来越多的资本进入到了市场中&#xff0c;剧本杀的产业链也逐…

OpenHarmony实战开发-如何实现tabContent内容可以在tabBar上显示并且tabBar可以响应滑动事件的功能。

介绍 本示例实现了tabContent内容可以在tabBar上显示并且tabBar可以响应滑动事件的功能。 效果图预览 使用说明 1.点击播放按钮进行视频播放&#xff0c;按住进度条按钮和进度条下方区域可以拖动进度条&#xff0c;更改视频播放进度。 实现思路 原生的Tabs组件&#xff0c…

微服架构基础设施环境平台搭建 -(六)Kubesphere 部署Redis服务 设置访问Redis密码

微服架构基础设施环境平台搭建 -&#xff08;六&#xff09;Kubesphere 部署Redis服务 & 设置访问Redis密码 微服架构基础设施环境平台搭建 系列文章 微服架构基础设施环境平台搭建 -&#xff08;一&#xff09;基础环境准备 微服架构基础设施环境平台搭建 -&#xff08;二…

记账本React案例(Redux管理状态)

文章目录 整体架构流程 环境搭建 创建项目 技术细节 一、别名路径配置 1.路径解析配置&#xff08;webpack&#xff09; &#xff0c;将/解析为src/ 2.路径联想配置&#xff08;vsCode&#xff09;&#xff0c;使用vscode编辑器时&#xff0c;自动联想出来src文件夹下的…

Day13.一刷数据结构算法(C语言版) 102二叉树的层序遍历;226翻转二叉树;101对称二叉树

一.102二叉树的层序遍历 二叉树的层序遍历力扣题目 1.思路分析 这道题我没有什么好的思路&#xff0c;而且力扣给的函数形式看得有点懵&#xff0c;所以我找到一个相对好理解的题解&#xff0c;具体可以参考下方链接。 力扣题解 说明&#xff1a; 返回值&#xff1a;可…