• 四.入门猜字游戏


    use std::io;
    fn main() {
          println!("Guess the number!");
          println!("Please input your guess.");
          let mut guess = String::new();
          io::stdin().read_line(&mut guess)
                .expect("Failed to read line");
          println!("You guessed: {}", guess);
    }
    
    println!("Guess the number!");
    

    println!打印信息宏

    let mut guess = String::new();
    

    mut可变变量,默认不带mut,不可修改变量
    Stirng::new()类似C++的静态函数调用

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

    io::stdin()返回类似c++的cin
    read_line类似<<函数
    expect为异常处理

    调用io::stdin需要先引入use std::io包;
    ::new 那一行的 :: 语法表明 new 是 String 类型的一个 关联函数(associated
    function)。关联函数是针对类型实现的,在这个例子中是 String ,而不是 String 的某个
    特定实例。一些语言中把它称为 静态方法(static method)。

    read_line 的工作是,无论用户在标准输入中键入什么内容,都将其存入一个字符串中,因
    此它需要字符串作为参数。这个字符串参数应该是可变的,以便 read_line 将用户输入附加
    上去。

    & 表示这个参数是一个 引用(reference),

    .expect("Failed to read line");
    实际是昂read_line函数返回的io::Result对象的子函数,用于在出错的的时候将语句输出到stderr

    整个还是像c++的函数调用返回一个对象,并通过对象的.语法继续调用这个返回对象的成员函数

    use std::io;
    use std::cmp::Ordering;
    use rand::Rng;
    fn main() {
          // ---snip---
          println!("You guessed: {}", guess);
          match guess.cmp(&secret_number) {
              Ordering::Less => println!("Too small!"),
              Ordering::Greater => println!("Too big!"),
              Ordering::Equal => println!("You win!"),
          }
    }
    

    match语法可以初步理解为c++的switch散弹

    guess是String类型,有cmp成员函数,切其返回一个枚举类型,然后在后面的{}中进行匹配。

    再来看看错误处理

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

    这是一个赋值语句,只是使用了额外的表达式进行求值。
    guess.trim().parse()将trim去空格,parse将字符串解析成数值,如果parse执行成功,则将解析的数值作为OK的参数num带出,即成功走OK分支返回num值,并将num值绑定到guess变量,失败走Err分支执行continue继续执行

    以上只是初步了解Rust的语法,我的目的是快速阅读rust编程手册,然后能后快速看懂Rust代码,熟悉quiche的库。
    故而实例细节以及更基础的语法暂时不管。后面章节在看。
    以上结合c++对rust基本的变量声明,函数调用,错误处理有初步认知。

  • 相关阅读:
    New-SAN-FENG-YUN-三
    San丰-Cloud
    SpringBoot+MySQL+MyBatis+Shiro+AdminLTE
    SanFeng-Clound
    SanFengClound
    传奇音乐设置
    热血传奇GOM引擎问题集锦
    app测试
    接口测试
    题目
  • 原文地址:https://www.cnblogs.com/kuikuitage/p/13415922.html
Copyright © 2020-2023  润新知