Rust学习笔记第2篇

2.1 猜数游戏:一次猜测

代码示例:

rust 复制代码
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);

}

首先我们声明了要使用标准库里面的io模块;然后第一次定义了一个变量guess,我们要注意Rust当中的变量默认都是immutable(一成不变)。如果我们需要声明一个变量,那么就需要使用mut关键字。

String是 Rust 标准库提供的动态字符串类型,它拥有所有权并且可以在堆上分配内存。String::new()是 String类型的一个关联函数(类似于静态方法),用于创建一个空的 String实例。

&mut是可变引用机制,引用允许你借用某个值而不获取其所有权。直接的引用在Rust当中默认也是不可变的。

{}是Rust中的占位符,一个{}就对应后面一个变量的值。

2.2 猜数游戏:生成神秘数字

下面这个命令可以帮我们在rust项目中添加库函数:

复制代码
cargo add <name>

命令的实际效果是修改Cargo.toml文件:

Cargo.lock文件在首次构建项目的时候就会出现。

rust 复制代码
use std::io;     //prelude
use rand::Rng;   //trait


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

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

    println!("The secret number is: {}", secret_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);

}

2.3 猜数游戏:比较猜测数字和神秘数字

rust 复制代码
use std::io;     //prelude
use rand::Rng;   //trait
use std::cmp::Ordering; //enum


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

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

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

    println!("Please input your guess:");

    let mut guess = String::new();

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

    //shadow机制可以隐藏变量,转变类型
    //第一个guess已经被隐藏了
    let guess: u32 = guess.trim().parse().expect("Please type a number!");

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

    }

}

这里的Ordering是一个枚举类型,代表数字比较的三种不同结果。

这里还涉及到了shadow机制,后续进行补充说明。

2.4 多次猜测

相关推荐
7年前端辞职转AI6 小时前
Python 文件操作
python·编程语言
7年前端辞职转AI7 小时前
Python 容器数据类型
python·编程语言
7年前端辞职转AI7 小时前
Python 流程控制语句
python·编程语言
7年前端辞职转AI7 小时前
Python 运算符
python·编程语言
爱分享的阿Q8 小时前
RustWebAssembly商用元年从实验到生产完整迁移指南
rust·web·wasm
7年前端辞职转AI8 小时前
Python 变量
python·编程语言
7年前端辞职转AI8 小时前
Python 数据类型
python·编程语言
大卫小东(Sheldon)8 小时前
Rudist v0.5.1 发布:AI 驱动的 Redis 客户端,更快、更直观
rust·rudist
7年前端辞职转AI9 小时前
Python 注释
python·编程语言