说明 - 创建一个 Binary Cargo 项目
游戏生成一个随机数并提示用户猜数字。
步骤 1 - 创建项目文件夹
打开终端并输入以下命令cargo new guess-game-app --bin。
这将创建以下文件夹结构。
guess-game-app/
-->Cargo.toml
-->src/
main.rs
Cargo new命令用于创建一个箱子。i>--bin标志指示正在创建的箱子是一个二进制箱。公共 crates 存储在名为 crates.io
https://crates.io/的中央存储库中。
第 2 步 - 包括对外部库的引用
这个例子需要生成一个随机数。由于内部标准库没有提供随机数生成逻辑,我们需要查看外部库或 crate。让我们用
randcrate 可在 crates.io 网站
crates.io 上获得
下图显示了 crate.io 网站和 rand crate 的搜索结果。
将 rand crate 的版本复制到 Cargo.toml 文件rand = "0.5.5"。
[package]
name = "guess-game-app"
version = "0.1.0"
authors = ["Mohtashim"]
[dependencies]
rand = "0.5.5"
第 3 步:编译项目
导航到项目文件夹。执行命令cargo build 在终端窗口 -
Updating registry `https://github.com/rust-lang/crates.io-index`
Downloading rand v0.5.5
Downloading rand_core v0.2.2
Downloading winapi v0.3.6
Downloading rand_core v0.3.0
Compiling winapi v0.3.6
Compiling rand_core v0.3.0
Compiling rand_core v0.2.2
Compiling rand v0.5.5
Compiling guess-game-app v0.1.0
(file:///E:/RustWorks/RustRepo/Code_Snippets/cargo-projects/guess-game-app)
Finished dev [unoptimized + debuginfo] target(s) in 1m 07s
rand crate 和所有传递依赖项(rand 的内部依赖项)将自动下载。
第 4 步 - 理解业务逻辑
现在让我们看看业务逻辑如何用于猜数游戏 -
第 5 步 - 编辑 main.rs 文件
将业务逻辑添加到 main.rs 文件。
use std::io;
extern crate rand;
//importing external crate
use rand::random;
fn get_guess() -> u8 {
loop {
println!("Input guess") ;
let mut guess = String::new();
io::stdin().read_line(&mut guess)
.expect("could not read from stdin");
match guess.trim().parse::<u8>(){ //remember to trim input to avoid enter spaces
Ok(v) => return v,
Err(e) => println!("could not understand input {}",e)
}
}
}
fn handle_guess(guess:u8,correct:u8)-> bool {
if guess < correct {
println!("Too low");
false
} else if guess> correct {
println!("Too high");
false
} else {
println!("You go it ..");
true
}
}
fn main() {
println!("Welcome to no guessing game");
let correct:u8 = random();
println!("correct value is {}",correct);
loop {
let guess = get_guess();
if handle_guess(guess,correct){
break;
}
}
}
第 6 步 - 编译和执行项目
在终端上执行命令cargo run。确保终端指向项目目录。
Welcome to no guessing game
correct value is 97
Input guess
20
Too low
Input guess
100
Too high
Input guess
97
You got it ..