定制设计【Rust指南】配置加速Cargo下载、更新依赖库|利用随机数编写Rust猜数游戏


文章目录

  前言

  定制设计上篇指南文章讲解了使用Cargo工具创建Rust定制设计项目的方法并编写讲解定制设计了该语言的输入输出格式。定制设计那么今天详细的教大家如何将Cargo定制设计自动更新依赖库定制设计的网址从国外改到国内镜像,定制设计这样无疑加快了开发的效率,定制设计而且更改完成后会举一定制设计个猜数游戏的例子,定制设计让大家轻松掌握更多Rust语法。


一、Cargo定制设计配置问题与VSC的实用插件下载

1、解决Cargo拉取crates.io非常慢的问题

  1. 在电脑上找到.cargo文件夹
  2. 进入.cargo文件夹并创建config文件(一定要按照图示操作)
  3. 使用vsc打开config文件,粘贴以下代码:

[source.crates-io]
replace-with = ‘ustc’

[source.ustc]
registry = “git://mirrors.ustc.edu.cn/crates.io-index”
最后记得保存哦,快捷键:ctrl+s

2、VSC自动管理Rust项目的实用插件

  1. 管理配置文件:TOML Language Support
  2. Rust包管理:crates

二、编写Rust 的猜数游戏

1、抓取的依赖库

Rust标准库里并没有生成随机数的包,因此需要利用Cargo工具拉取crates.io里的rand包:

  • 使用Cargo新建Rust 项目并在Cargo.toml的依赖标签下使用rand=“0.3.14”,开始会报错,稍等片刻Cargo会将该库拉取到该项目并可以在Cargo.lock文件中查看具体信息。
  • Cargo.lock里存放已经拉取的依赖信息

2、使用rand包并编写源代码

猜数游戏源码:

use std::{io, cmp::Ordering};use rand::Rng;fn main() {    println!("****猜数小程序****");    let symth =rand::thread_rng().gen_range(1, 101);    // println!("神秘数字为:{}",symth);    loop{        println!("输入你猜的数字:");        let mut guess =String::new();        io::stdin().read_line(&mut guess).expect("读取失败");        let guess:u32= guess.trim().parse().expect("转换错误");               println!("你猜的数字为:{}",guess);        match guess.cmp(& symth) {            Ordering::Less => println!("Too small !"),            Ordering::Greater=>println!("Too big !"),            Ordering::Equal=> {                println!("you win !");                break;            }        }    }} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

运行效果:

3、Rust语法学习

解析源码中的 生成随机数、数据类型转换、match和 loop 的含义及使用

  1. 利用rand包生成随机数
let symth =rand::thread_rng().gen_range(1, 101);
  • 1

调用rand包里的thread_rng()中的gen_range()方法返回一个随机数并赋值给定义的常量symth

  • gen_range()参数列表输入两个参数,第一个是随机数的最小值,第二个数是最大值
  • 区间是前开后闭的,上面代码随机数取值范围就是1~100。
  1. 类型转换
 let guess:u32= guess.trim().parse().expect("转换错误");
  • 1

这里可以看到我又定义了一个guess变量,在Rust语言里可以定义重名的变量,但这时候前面定义重名变量就会被隐藏(具体隐藏规则在后面文章会讲)这行代码中第一个guess是新变量,第二个guessd的隐藏变量,依然是字符串类型。

  • trim()函数可以去掉字符串的空白以及换行(我们输入完毕需要按下回车,trim可以将其去掉);
  • parse()函数会把变量解析成一个对应的数据类型,而Rust中的整型有i32u32i64等,因此我给前面的guess后面加上:u32,这样parse()函数就可以把字符串解析为u32的整型
  • expect()函数在上文有讲过,属于会返回Result类的枚举,有遗忘的朋友可以翻阅上篇博文
  1. match分支
match guess.cmp(& symth){	Ordering::Less => ......}
  • 1
  • 2
  • 3

match是Rust中十分常用的分支语句,Ordering是一个枚举类型,含有三个变体,match与其联用,根据枚举的返回结果来执行对于的分支语句。cmp()是Rust里的一个用来比较的方法,参数列表里传入的就是上面生成的随机数。

  • Ordering类型的三个变体为:LessGreaterEqual,分别代表小于、大于和等于
  • cmp和Ordering使用前需要从标准库引入:use std::cmp::Ordering
  1. loop循环
loop{	......	Ordering::Equal=> {        println!("you win !");        break;    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

loop在Rust里是一个死循环,可以配合Orderingbreak关键字来控制流程并跳出循环。


有关Cargo配置和Rust猜数游戏的内容到此结束,下一篇博客我们不见不散!

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发