Ferrugem - Gerenciador de Pacotes

Cargo é o gerenciador de pacotes do RUST. Isso funciona como uma ferramenta e gerencia projetos Rust.

Alguns comandos de carga comumente usados ​​estão listados na tabela abaixo -

Sr. Não Comando e Descrição
1

cargo build

Compila o projeto atual.

2

cargo check

Analisa o projeto atual e relata erros, mas não cria arquivos de objeto.

3

cargo run

Compila e executa src / main.rs.

4

cargo clean

Remove o diretório de destino.

5

cargo update

Atualiza as dependências listadas em Cargo.lock.

6

cargo new

Cria um novo projeto de carga.

Cargo ajuda a baixar bibliotecas de terceiros. Portanto, ele atua como um gerenciador de pacotes. Você também pode construir suas próprias bibliotecas. O Cargo é instalado por padrão quando você instala o Rust.

Para criar um novo projeto de carga, podemos usar os comandos fornecidos a seguir.

Crie uma caixa binária

cargo new project_name --bin

Crie uma caixa de biblioteca

cargo new project_name --lib

Para verificar a versão atual da carga, execute o seguinte comando -

cargo --version

Ilustração - Criar um projeto Binary Cargo

O jogo gera um número aleatório e solicita que o usuário adivinhe o número.

Etapa 1 - Criar uma pasta de projeto

Abra o terminal e digite o seguinte comando cargo new guess-game-app --bin .

Isso criará a seguinte estrutura de pastas.

guess-game-app/
   -->Cargo.toml
   -->src/
      main.rs

O novo comando de carga é usado para criar uma caixa. O sinalizador --bin indica que a caixa que está sendo criada é uma caixa binária. Caixas públicas são armazenadas em um repositório central chamado crates.iohttps://crates.io/.

Etapa 2 - Incluir referências a bibliotecas externas

Este exemplo precisa gerar um número aleatório. Visto que a biblioteca padrão interna não fornece lógica de geração de número aleatório, precisamos olhar para bibliotecas externas ou caixas. Vamos usarrandcaixa que está disponível no site crates.io crates.io

o https://crates.io/crates/randé uma biblioteca de ferrugem para geração de números aleatórios. Rand fornece utilitários para gerar números aleatórios, convertê-los em tipos e distribuições úteis e alguns algoritmos relacionados à aleatoriedade.

O diagrama a seguir mostra o site crate.io e o resultado da pesquisa por rand crate.

Copie a versão da caixa rand para o arquivo Cargo.toml rand = "0.5.5" .

[package]
name = "guess-game-app"
version = "0.1.0"
authors = ["Mohtashim"]

[dependencies]
rand = "0.5.5"

Etapa 3: compilar o projeto

Navegue até a pasta do projeto. Execute o comandocargo build na janela do terminal -

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

A caixa de rand e todas as dependências transitivas (dependências internas de rand) serão baixadas automaticamente.

Etapa 4 - Compreendendo a lógica de negócios

Vamos agora ver como funciona a lógica de negócios para o jogo de adivinhação de números -

  • O jogo inicialmente gera um número aleatório.

  • Um usuário é solicitado a inserir a entrada e adivinhar o número.

  • Se o número for menor que o número gerado, uma mensagem “Muito baixo” é impressa.

  • Se o número for maior que o número gerado, uma mensagem “Muito alto” é impressa.

  • Se o usuário inserir o número gerado pelo programa, o jogo é encerrado.

Etapa 5 - Edite o arquivo main.rs

Adicione a lógica de negócios ao arquivo 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;
      }
   }
}

Etapa 6 - Compilar e executar o projeto

Execute o comando cargo run no terminal. Certifique-se de que o terminal aponta para o diretório do projeto.

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 ..