Rust基礎學習:
Rust的學習門檻是比較低的,最起碼的官網支持所有語言,而且《Rust程序設計》這門基礎入門書記在GitBook上也是能找到的,這里就不贅述了,書的學習地址:https://legacy.gitbook.com/book/kaisery/trpl-zh-cn/details
Rust實例:
1. 輸入輸出demo:
use std::io; // 輸入輸出demo fn main() { // 這里添加!是因為調用的是系統宏,如果是自己寫的函數是不需要! println!("Hello, world!"); println!("Please input your guess: "); let mut guess = String::new(); // 使用了std庫來讀取數據到guess可變變量中 io::stdin().read_line(&mut guess) .expect("Failed to read line"); // 這里使用read_line會返回一個io::Result對象(OK,Err) // 需要判斷后處理,不然會拋錯,也就是說必須執行異常處理。 println!("You guessed: {}",guess) }
2. 使用crate(rust的代碼包),來增加第三方功能,下面引用第三方的rand包,隨機生成數字,然后和我們猜的進行比較。
use std::io; // 需要在Cargo.toml中依賴中添加rand="0.5.5" use rand::Rng; // 輸入輸出demo fn main() { // 這里添加!是因為調用的是系統宏,如果是自己寫的函數是不需要! println!("Hello, world!"); println!("Please input your guess."); let mut guess = String::new(); // 使用了std庫來讀取數據到guess可變變量中 io::stdin().read_line(&mut guess) .expect("Failed to read line"); // 這里使用read_line會返回一個io::Result對象(OK,Err) // 需要判斷后處理,不然會拋錯,也就是說必須執行異常處理。 // 生成隨機數 let secret_number = rand::thread_rng().gen_range(1,101); println!("The secrect number is {}",secret_number); println!("You guessed: {}",guess) }
3. 完整的demo例子
use std::io; // 需要在Cargo.toml中依賴中添加rand="0.5.5" use rand::Rng; use std::cmp::Ordering; // 輸入輸出demo fn main() { // 這里添加!是因為調用的是系統宏,如果是自己寫的函數是不需要! println!("Hello, world!"); // 生成隨機數 let secret_number = rand::thread_rng().gen_range(1,101); println!("The secrect number is {}",secret_number); loop { println!("Please input your guess."); let mut guess = String::new(); // 使用了std庫來讀取數據到guess可變變量中 io::stdin().read_line(&mut guess) .expect("Failed to read line"); // 這里使用read_line會返回一個io::Result對象(OK,Err) // 需要判斷后處理,不然會拋錯,也就是說必須執行異常處理。 // 轉換成數字, 支持隱藏覆蓋功能shadowing let guess:u32 = guess.trim().parse() // parse 會根據:u32判斷出要轉換成的類型 //.expect("Please type a number"); // 轉換也可能出錯所以需要使用判斷std::Result { Ok(num) => num, Err(_) => continue, // 輸入錯誤后可以繼續 } println!("You guessed: {}",guess); // 使用match來多路選擇 match guess.cmp(&secret_number) { Ordering::Less => println!("Too small"), Ordering::Greater => println!("Too big"), Ordering::Equal => { println!("You win"); break; } } } }