Rust简单demo

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