Rust学习笔记
Rust编程语言入门教程课程笔记
Lecture 1: Getting Started
hello_world.rs
fn main(){
println!("Hello World!"); // "!" means "println!" is a rust macro
}
// compile: rustc hello_world.rs
// run: ./hello_world
hello_cargo.rs
fn main() {
println!("Hello, cargo!");
}
//new project: cargo new hello_cargo
//src: main.rs
//cargo.toml: project metadata
//check: cargo check
//build: cargo build -> target/debug/hello_cargo
//build: cargo build --release -> target/release/hello_cargo
//run: cargo run
Lecture 2: Programming a Guessing Game
use std::io; //io library
use std::cmp::Ordering; //cmp method
use rand::Rng; //rand library
fn main() {
let secret_number = rand::thread_rng().gen_range(1..=100); //gen_range method of rand::thread_rng()
println!("Guess the number!");
loop {
println!("Please input your guess.");
let mut guess = String::new(); //String type is in prelude
//guess is a mutable variable
io::stdin() //io library
.read_line(&mut guess) //read_line returns a value of type io::Result
.expect("Failed to read line"); //expect method of io::Result
//io.Result is an enum
//io.Result has variants: Ok and Err
//Ok: the value inside is the result of the successful operation
//Err: the value inside is the Err infomation
let guess:u32 = match guess.trim().parse(){//shadowing
Ok(num) => num,
Err(_) => continue,
};
println!("You guessed: {}", guess);
match guess.cmp(&secret_number) { //cmp method of the type String
//cmp method compares two values and can be called on anything that can be compared
//cmp method returns a variant of Ordering enum
//Ordering enum has variants: Less, Greater, Equal
Ordering::Less => println!("Too small!"),
Ordering::Greater => println!("Too big!"),
Ordering::Equal => {
println!("You win!");
break;
}
}
}
}