For simple types (integers, booleans, etc.) that implement the Copy trait, assignment copies instead of moves.
use std::fs::File; use std::io::ErrorKind; fn main() let greeting_file_result = File::open("hello.txt"); let greeting_file = match greeting_file_result Ok(file) => file, Err(error) => match error.kind() ErrorKind::NotFound => match File::create("hello.txt") Ok(fc) => fc, Err(e) => panic!("Problem creating the file: :?", e), , other_error => panic!("Problem opening the file: :?", other_error); ultimate rust crash course
Immutability prevents accidental changes across large codebases. It’s your friend. Constants const MAX_POINTS: u32 = 100_000; // always immutable, type required. 4. Shadowing (Not Mutation) You can redeclare a variable name: For simple types (integers, booleans, etc