手册
目录
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::(){ //请记住修剪输入以避免输入空格
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 ..
相关
视频
RELATED VIDEOS
科技资讯
1
2
3
4
5
6
7
精选课程
共5课时
17.2万人学习
共49课时
77万人学习
共29课时
61.7万人学习
共25课时
39.3万人学习
共43课时
70.9万人学习
共25课时
61.6万人学习
共22课时
23万人学习
共28课时
33.9万人学习
共89课时
125万人学习