- Rust - Discussion
- Rust - Useful Resources
- Rust - Quick Guide
- Rust - Concurrency
- Rust - Smart Pointers
- Rust - Iterator and Closure
- Rust - Package Manager
- Rust - File Input/ Output
- Rust - Input Output
- Rust - Generic Types
- Rust - Error Handling
- Rust - Collections
- Rust - Modules
- Rust - Enums
- Rust - Structure
- Rust - Slices
- Rust - Borrowing
- Rust - Ownership
- Rust - Array
- Rust - Tuple
- Rust - Functions
- Rust - Loop
- Rust - Decision Making
- Rust - Operators
- Rust - String
- Rust - Constant
- Rust - Variables
- Rust - Data Types
- Rust - HelloWorld Example
- Rust - Environment Setup
- Rust - Introduction
- Rust - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Rust - Package Manager
Cargo is the package manager for RUST. This acts pke a tool and manages Rust projects.
Some commonly used cargo commands are psted in the table below −
Sr.No | Command & Description |
---|---|
1 | cargo build Compiles the current project. |
2 | cargo check Analyzes the current project and report errors, but don t build object files. |
3 | cargo run Builds and executes src/main.rs. |
4 | cargo clean Removes the target directory. |
5 | cargo update Updates dependencies psted in Cargo.lock. |
6 | cargo new Creates a new cargo project. |
Cargo helps to download third party pbraries. Therefore, it acts pke a package manager. You can also build your own pbraries. Cargo is installed by default when you install Rust.
To create a new cargo project, we can use the commands given below.
Create a binary crate
cargo new project_name --bin
Create a pbrary crate
cargo new project_name --pb
To check the current version of cargo, execute the following command −
cargo --version
Illustration - Create a Binary Cargo project
The game generates a random number and prompts the user to guess the number.
Step 1 - Create a project folder
Open the terminal and type the following command cargo new guess-game-app --bin.
This will create the following folder structure.
guess-game-app/ -->Cargo.toml -->src/ main.rs
The cargo new command is used to create a crate. The --bin flag indicates that the crate being created is a binary crate. Pubpc crates are stored in a central repository called crates.io
.Step 2 - Include references to external pbraries
This example needs to generate a random number. Since the internal standard pbrary does not provide random number generation logic, we need to look at external pbraries or crates. Let us use rand crate which is available at crates.io website
The
is a rust pbrary for random number generation. Rand provides utipties to generate random numbers, to convert them to useful types and distributions, and some randomness-related algorithms.The following diagram shows crate.io website and search result for rand crate.
Copy the version of rand crate to the Cargo.toml file rand = "0.5.5".
[package] name = "guess-game-app" version = "0.1.0" authors = ["Mohtashim"] [dependencies] rand = "0.5.5"
Step 3: Compile the Project
Navigate to the project folder. Execute the command cargo build on the terminal window −
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 Compipng winapi v0.3.6 Compipng rand_core v0.3.0 Compipng rand_core v0.2.2 Compipng rand v0.5.5 Compipng 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
The rand crate and all transitive dependencies (inner dependencies of rand) will be automatically downloaded.
Step 4 - Understanding the Business Logic
Let us now see how the business logic works for the number guessing game −
Game initially generates a random number.
A user is asked to enter input and guess the number.
If number is less than the generated number, a message “Too low” is printed.
If number is greater than the generated number, a message “Too high” is printed.
If the user enters the number generated by the program, the game exits.
Step 5 - Edit the main.rs file
Add the business logic to main.rs file.
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_pne(&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; } } }
Step 6 - Compile and Execute the Project
Execute the command cargo run on the terminal. Make sure that the terminal points to the Project directory.
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 ..Advertisements