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