简介
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文件(程序运行所依赖的标准库和版本)
结束语:生命是一场冒险,不断学习、探索和成长。