Learn Rust for the Future: Day 1
Reference: The Rust Programming Language
This book is the official tutorial for Rust.
Install Cargo
Cargo is Rust's package manager, similar to Maven in Java. You can use it to create and manage projects. For example, to create a new project named guessing_game
, you can run:
sh
cargo new guessing_game
The Cargo.toml
file is like pom.xml
in Maven. It manages your project's dependencies. In this case, there is only one dependency named rand
, which is used to generate random numbers. The line rand = "0.8.5"
is shorthand for rand = "^0.8.5"
, meaning it will use versions from 0.8.5 up to, but not including, 0.9.0. If a new compatible version, like 0.8.6, is released, you can update to it using cargo update
. However, if the new version has incompatible changes, it might break your program. Therefore, Cargo.lock
is required to ensure consistent versions.
Here's an example Cargo.toml
file for the guessing game project:
toml
[package]
name = "guessing_game"
version = "0.1.0"
edition = "2021"
[dependencies]
rand = "0.8.5"
The Cargo.lock
file is generated automatically by Cargo and keeps track of the exact versions of all dependencies.
Features Compared to Java
In Rust, you can declare variables as immutable by default using let
, which means you cannot change their value later:
rust
let x = 1;
// error: x is immutable
x = 2;
To make a variable mutable, use mut
:
rust
let mut x = 2;
x = 3;
Rust also supports variable shadowing, allowing you to declare a variable with the same name in a different scope. This feature allows the variable to have different types or values in different scopes:
rust
let x = 3;
{
let x = 12;
// x: 12 within this scope
println!("x: {x}");
}
// x: 3 outside the inner scope
println!("x: {x}");
Shadowing allows you to transform a variable's type, while mut
does not. When the scope ends, the variable reverts to its original value.