Rust1 Getting Started & Programming a Guessing Game

Rust学习笔记

Rust编程语言入门教程课程笔记

参考教材: The Rust Programming Language (by Steve Klabnik and Carol Nichols, with contributions from the Rust Community)

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;
            }
        }

    }
    
    
}

你可能感兴趣的:(Rust,笔记,rust)