Rust - 包管理

  • 简述

    Cargo 是 RUST 的包管理器。这就像一个工具并管理 Rust 项目。
    下表列出了一些常用的 Cargo 命令 -
    序号 命令 & 描述
    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 帮助下载第三方库。因此,它就像一个包管理器。您还可以构建自己的库。Cargo 在您安装 Rust 时默认安装。
    要创建一个新的 Cargo 项目,我们可以使用下面给出的命令。

    创建一个二进制包

    
    cargo new project_name --bin
    

    创建一个库包

    
    cargo new project_name --lib
    
    要检查当前版本的 Cargo ,请执行以下命令 -
    
    cargo --version
    
  • 说明 - 创建一个 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 上获得
    https://crates.io/crates/rand是随机数生成cargo库。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"
    

    第 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; 
    //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 ..