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

相关推荐
l1t3 小时前
DeepSeek总结的将 Rust Delta Kernel 集成到 ClickHouse
数据库·clickhouse·rust
techdashen5 小时前
在 Rust 异步接口的丛林中生存:从同步 I/O 到手写异步状态机
开发语言·后端·rust
guyoung5 小时前
BoxAgnts介绍(1)——开箱即用(Out-Of-The-Box)
rust·agent·ai编程
斐夷所非6 小时前
从 Oxidizr 到 Oxidizer | Rust 在系统与逆向工程的应用
rust
iiiiyu10 小时前
面向对象案例
java·大数据·开发语言·数据结构·python·编程语言
星栈独行11 小时前
别让 API 跳去登录页:我在 Axum 里做了认证失败双通道
前端·后端·rust·开源·github·个人开发
『昊纸』℃12 小时前
《C语言电子新-2026最新版》-编程语言与程序
数据结构·算法·程序设计·编程语言·软件开发
古城小栈21 小时前
Rust 调用 C 语言库 实战指南(企业级)
c语言·开发语言·rust
刘布斯yy1 天前
新写了个直播录制工具,可录制抖音快手斗鱼直播
rust·音视频·直播录制
恋喵大鲤鱼1 天前
Rust 中的字符串 slice 是什么?
rust