记录自学rust语言(1)

本文是作者自学Rust语言的第一篇记录,介绍了一个简单的猜数字游戏的实现。通过使用`rand`库生成随机数,`std::io`进行用户输入交互,并利用枚举`std::cmp::Ordering`进行比较。文章详细解析了代码中的关键点,如`use`指令、`println!`宏、`let`声明以及错误处理的`expect`方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

这是一个用rust编写的猜数字游戏。

use std::io;
use rand::Rng;
use std::cmp::Ordering;

fn main() {
    println!("Guess the number!");

    let secret_number = rand::thread_rng().gen_range(1,101);

    //println!("The secret number is:{}",secret_number);

    loop {

        println!("Please input your guess");

        let mut guess = String::new();

        io::stdin().read_line(&mut guess)
            .expect("Failed to read line");

        let guess: u32 = match  guess.trim().parse() {
            Ok(num) => num,
            Err(_) => continue,
        };

        println!("You guessed:{}",guess);

        match guess.cmp(&secret_number){
            Ordering::Less => println!("Too small!"),
            Ordering::Greater => println!("Too big!"),
            Ordering::Equal =>{
                println!("You win!");
                break;
             }

        }
    }

}

先讲讲我对着一段代码的认识:

  • 一开始使用use指令引用一些库:

  1. 首先引入的std::io 库提供很多有用的功能,包括接收用户输入的功能。

  2. 引入的rand::Rng库提供了随机数

  3. 从标准库引入了一个叫做 std::cmp::Ordering 的类型。同 Result 一样, Ordering 也是一个枚举,不过它的成员是 LessGreaterEqual。这是比较两个值时可能出现的三种结果。
  • println()打印函数,但是pintln!()则是一个宏

  • let secret_number = rand::thread_rng().gen_range(1,101);//首先用let指令创建一个不可变变量secret_number,引入库中随机函数gen_range()。且函数参数【1,101),半闭半开。本且赋值给secet_number。

  • let mut guess 表示创建一个可变变量guess

  • io::stdin().read_line(&mut guess).expect("Failed to read line");表示输入一个值赋给guess,expect()函数表示,如果出现前面程序错误会输入一句failed to read line 然后退出程序。

  • parse 返回一个 Result 类型,而 Result 是一个拥有 OkErr 成员的枚举。

  • 让我们看看使用 match 表达式的例子。假设用户猜了 50,这时随机生成的秘密数字是 38。比较 50 与 38 时,因为 50 比 38 要大,cmp 方法会返回 Ordering::GreaterOrdering::Greatermatch 表达式得到的值。它检查第一个分支的模式,Ordering::LessOrdering::Greater并不匹配,所以它忽略了这个分支的代码并来到下一个分支。下一个分支的模式是 Ordering::Greater正确 匹配!这个分支关联的代码被执行,在屏幕打印出 Too big!match 表达式就此终止,因为该场景下没有检查最后一个分支的必要。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值