220826-rust猜数游戏

The Rust Programming Language第二章的猜数游戏,自己也写了下。

主要是调库函数,看标准库模块的话,在https://doc.rust-lang.org/std中搜索,看第三方rate的话,在https://docs.rs/中搜索,以及第三方rate如果有book链接,优先看这个。

//cargo.toml
[package]
name = "guessing_game"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
rand="0.8.5"
//main.rs
use rand::prelude::*;
use std::{cmp::Ordering, io::stdin};
fn main() -> () {
    println!("Guess game!");
    let mut rng = thread_rng();
    let random_value = rng.gen_range(1..1000);
    loop {
        let mut input = String::new();
        println!("plz guess a number:");
        stdin().read_line(&mut input).expect("read input error.");
        let guess_num: i32 = match input.trim().parse() {
            Ok(value) => value,
            Err(err) => {
                println!("bad input: {}, try again.", err);
                continue;
            }
        };
        match guess_num.cmp(&random_value) {
            Ordering::Less => println!("Less."),
            Ordering::Greater => println!("Greater"),
            Ordering::Equal => {
                println!("win");
                break;
            }
        }
    }
}

rust的观感和别的强类型语言看起来还是有些不一样的,主要是match匹配、panic机制,还有错误处理。

像go的话写起来就是这样的(代码来自chingli.com/coding/go-rust/01-intro/):

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    fmt.Println("Guess the number!")

    rand.Seed(time.Now().UnixNano())
    secretNumber := rand.Intn(101)

Loop:
    for {
        fmt.Println("Please input your guess.")
        guess := -1

        _, err := fmt.Scanln(&guess)
        if err != nil {
            fmt.Println("Failed to read line:", err)
            continue
        }

        fmt.Printf("You win: %v\n", guess)

        switch {
        case guess < secretNumber:
            fmt.Println("Too small!")
        case guess > secretNumber:
            fmt.Println("Too big!")
        case guess == secretNumber:
            fmt.Println("You win!")
            break Loop
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值