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 多次猜测

相关推荐
rainchestnut15 小时前
bevy初体验2-官方示例学习
rust
葡萄城技术团队18 小时前
Hurley:用 Rust 打造的高性能 HTTP 客户端 + 压测工具
开发语言·http·rust
平常心cyk19 小时前
Python基础快速复习——while循环和for循坏
编程语言
Source.Liu21 小时前
【dxf-rs】库全面介绍
rust·dxf-rs
土豆12501 天前
Rust宏编程完全指南:用元编程解锁Rust的终极力量
rust·编程语言
小杍随笔1 天前
【Rust 语言编程知识与应用:基础数据类型详解】
开发语言·后端·rust
小杍随笔2 天前
【Rust 语言编程知识与应用:自定义数据类型详解】
开发语言·后端·rust
咚为2 天前
Rust 跨平台编译实战:从手动配置到 Cross 容器化
开发语言·后端·rust
幸福指北2 天前
我用 Tauri + Vue 3 + Rust 开发了一款跨平台网络连接监控工具Portview,性能炸裂!
前端·网络·vue.js·tcp/ip·rust
咚为2 天前
深入浅出 Rust FFI:从内存安全到二进制兼容
开发语言·安全·rust