📅  最后修改于: 2020-11-02 04:23:16             🧑  作者: Mango
Cargo是RUST的包裹经理。这就像一个工具,并管理Rust项目。
下表列出了一些常用的货运命令-
Sr.No | Command & Description |
---|---|
1 |
cargo build Compiles the current project. |
2 |
cargo check Analyzes the current project and report errors, but don’t build object files. |
3 |
cargo run Builds and executes src/main.rs. |
4 |
cargo clean Removes the target directory. |
5 |
cargo update Updates dependencies listed in Cargo.lock. |
6 |
cargo new Creates a new cargo project. |
货运有助于下载第三方库。因此,它就像一个程序包管理器。您也可以构建自己的库。当您安装Rust时,默认情况下会安装Cargo。
要创建一个新的货运项目,我们可以使用下面给出的命令。
cargo new project_name --bin
cargo new project_name --lib
要检查货物的当前版本,请执行以下命令-
cargo --version
游戏会生成一个随机数字,并提示用户猜测该数字。
打开终端,然后键入以下命令cargo newguess-game-app –bin 。
这将创建以下文件夹结构。
guess-game-app/
-->Cargo.toml
-->src/
main.rs
cargo new命令用于创建包装箱。 –bin标志指示正在创建的板条箱是二进制板条箱。公共包装箱存储在名为crates.io https://crates.io/的中央存储库中。
此示例需要生成一个随机数。由于内部标准库不提供随机数生成逻辑,因此我们需要查看外部库或板条箱。让我们使用crates.io网站crates.io上的rand crate。
https://crates.io/crates/rand是用于随机数生成的rust库。 Rand提供实用程序来生成随机数,将其转换为有用的类型和分布以及一些与随机性有关的算法。
下图显示了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"
导航到项目文件夹。在终端窗口上执行命令货物构建–
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箱和所有传递依赖项(rand的内部依赖项)将自动下载。
现在让我们看看数字猜谜游戏的业务逻辑如何工作-
游戏最初会生成一个随机数。
要求用户输入内容并猜测数字。
如果数字小于生成的数字,则会显示消息“过低”。
如果数字大于生成的数字,则会显示消息“过高”。
如果用户输入程序生成的数字,则游戏退出。
将业务逻辑添加到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::(){ //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;
}
}
}
在终端上执行命令货物运行。确保终端指向项目目录。
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 ..