10分钟内学会用Cargo构建Rust猜数字游戏

简介

Cargo:是Rust工具链中内置的构建系统及包管理器。它可以处理重多诸如构建代码、下载编译依赖库等琐碎但重要的任务。安装Rust时,Cargo就已经被附带在了当前的Rust工具链里。无需再次安装。
猜数游戏:首先生成一个1到100之间的随机整数,并紧接着请求玩家对这个数字进行猜测,假如玩家输入的数字和随机数不同,那么程序将给出数字偏大或偏小的提示。加入玩家猜中了我们准备的数字,那么程序就会打印出一段祝贺信息并随之退出。需求明确直接开整
IDE工具:Visual Studio Code

一、创建一个新的项目

在Rust项目根目录下(LZ的目录:G:\ayangz\Rust\Projects),用cargo初始化一个项目guessing_game,输入如下指令,可以看到.git和.gitignore两个git文件,src源代码文件夹和Cargo.toml文件(对比JAVA,相当于Maven的pom文件,依赖和版本管理)

cargo new guessing_game

在这里插入图片描述

二、编写程序

1、添加rand依赖

操作:使用VS Code打开项目,打开Cargo.toml文件,在[dependencies]标签下添加rand = "0.4.0"
说明:[package]标签下是项目名称和版本信息,[dependencies]下是依赖的信息。版本根据自己需求来,这里我的版本号0.4.0
在这里插入图片描述

2、写代码

操作:在main.rs项目入口文件写代码,代码如下:
说明use关键字:声明标准库(相当于Java的import导包引用),loop关键字:循环体(相当于Java的while)都是搭配break和continue关键字使用,let关键字:定义变量(相当于js的var),mut关键字表示变量可改变(Rust中定义变量默认不可变的)。 match表达式由数个分支(arm)组成,每个分支都包含一个用于匹配的模式(pattern),以及匹配成功后要执行的相应的代码。guess.trim().parse()对我们输入的值去空和添加一个换行符。expect处理异常(相当于Java的Exception)。&符号是在方法中引用某参数。u32 32位无符号整数,还有i32(32位整数)等。

use std::io;
use std::cmp::Ordering;
use rand::Rng;
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;
            }
        }
    }
}

3、编译运行程序

操作cargo build编译程序,cargo run运行程序
说明:编译后生成targe文件夹(编译文件存储目录)和Cargo.lock文件(程序运行所依赖的标准库和版本)
在这里插入图片描述

结束语:生命是一场冒险,不断学习、探索和成长。

猜你喜欢

转载自blog.csdn.net/Da_zhenzai/article/details/129617055