Cargo 是 RUST 的包管理器。 这就像一个工具并管理 Rust 项目。
下表列出了一些常用的cargo命令 −
| Sr.No | 命令与描述 |
|---|---|
| 1 |
cargo build 编译当前项目。 |
| 2 |
cargo check 分析当前项目并报告错误,但不构建目标文件。 |
| 3 |
cargo run 构建并执行 src/main.rs。 |
| 4 |
cargo clean 删除目标目录。 |
| 5 |
cargo update 更新 Cargo.lock 中列出的依赖项。 |
| 6 |
cargo new 创建一个新的 cargo 项目。 |
Cargo 帮助下载第三方库。 因此,它的作用就像一个包管理器。 您还可以构建自己的库。 安装 Rust 时默认安装 Cargo。
要创建一个新的 Cargo 项目,我们可以使用下面给出的命令。
cargo new project_name --bin
cargo new project_name --lib
要检查Cargo的当前版本,请执行以下命令 −
cargo --version
游戏生成一个随机数并提示用户猜测该数字。
打开终端并输入以下命令 cargo newguess-game-app --bin。
这将创建以下文件夹结构。
guess-game-app/
-->Cargo.toml
-->src/
main.rs
cargo new 命令用于创建一个 crate。 --bin 标志表示正在创建的 crate 是二进制 crate。 公共 crate 存储在名为 crates.io https://crates.io/ 的中央存储库中。
这个例子需要生成一个随机数。 由于内部标准库不提供随机数生成逻辑,因此我们需要查看外部库或 crate。 让我们使用 rand crate,可以在 crates.io 网站 crates.io 上找到
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"
导航到项目文件夹。 在终端窗口上执行命令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 的内部依赖项)将自动下载。
现在让我们看看猜数字游戏的业务逻辑是如何工作的 −
游戏最初会生成一个随机数。
要求用户输入内容并猜测数字。
如果数字小于生成的数字,则打印消息"Too low"。
如果数字大于生成的数字,则会打印一条消息"Too high"。
如果用户输入程序生成的数字,游戏就会退出。
将业务逻辑添加到 main.rs 文件中。
use std::io;
extern crate rand;
//导入外部 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>(){ //请记住修剪输入以避免输入空格
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;
}
}
}
在终端上执行命令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 ..