Rust包管理器
Cargo是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项目,可以使用下面给出的命令:
创建一个二进制crate
cargo new project_name --bin
创建一个库crate
cargo new project_name --lib
要检查cargo的当前版本,请执行以下命令:
cargo --version
例子-创建一个二进制Cargo项目
游戏会生成一个随机数字,并提示用户猜测该数字。
步骤1-建立专案资料夹
打开终端并输入以下命令 cargo new guess-game-app --bin,这将创建以下文件夹结构。
guess-game-app/ -->Cargo.toml -->src/ main.rs
cargo new命令用于创建crate,--bin 选项表示正在创建的crate是二进制crate,公共crate存储在名为crates.io的中央存储库中 https://crates.io/ .
第2步-引用外部库
此示例需要生成一个随机数,由于内部标准库不提供随机数生成逻辑,因此我们需要引用外部库或crate。rand是一个用于生成随机数的rust库,我们可在crates.io网站上找到https://crates.io/crates/rand。
将rand crate的版本复制到Cargo.toml文件的dependencies中,即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-了解业务逻辑
现在让我们看看数字猜谜游戏的业务逻辑是如何工作的:
游戏最初会生成一个随机数;
要求用户输入输入内容并猜测数字;
如果数字小于生成的数字,则会显示消息“Too low”;
如果数字大于生成的数字,则会显示消息“Too high”;
如果用户输入程序生成的数字,则游戏退出。
第5步-编辑main.rs文件
将业务逻辑添加到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>(){ //记住trim输入以避免输入空白符 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 ..