加载中...
第二次Rust
发表于:2022-05-30 | 分类: code
字数统计: 192 | 阅读时长: 1分钟 |

没有unsafe啦

但是这次引入了一个lazy_static包,这个宏普遍用于各种项目,也许就该合并到标准库里。

下一次尝试使用多线程实现,guessing和examiner通过channel沟通,这样examiner就可以一直存有随机出来的数据了。

#[macro_use]
extern crate lazy_static;

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

lazy_static! {
    static ref SECERT_NUMBER:i32 = rand::thread_rng().gen_range(1..101);
}
fn main() {
    println!("Guess the number!");
    println!("{}是对的", guessing(0, 100));
}

fn examiner(number: &i32) -> Ordering{
    match number.cmp(&SECERT_NUMBER) {
        Ordering::Greater => Ordering::Greater,
        Ordering::Less => Ordering::Less,
        Ordering::Equal => Ordering::Equal
    }
}

fn guessing(minimum: i32, maximum: i32)  -> i32 {
    let middle: i32 = minimum + (maximum - minimum)/2;
        match examiner(&middle) {
        Ordering::Greater => {
            println!("{}太大了", middle);
            guessing(minimum, middle)},
        Ordering::Less => {
            println!("{}太小了", middle);
            guessing(middle, maximum)},
        Ordering::Equal => middle
    }
}
上一篇:
第三次Rust
下一篇:
第一次Rust
本文目录
本文目录