Rust学习笔记002: 猜字游戏

version0.1

rust 复制代码
// 导入标准库中的 `io` 模块,它包含了输入输出相关的功能
use std::io;

// 程序的入口点
fn main() {
    println!("Guess the number!");
    println!("Please input your guess.");

    // 创建一个可变的字符串变量 `guess`,用于存储用户的输入
    let mut guess = String::new();

    // 通过 `io::stdin()` 获取标准输入的句柄,然后使用 `.read_line(&mut guess)` 从输入中读取一行数据,
    // 并将其存储到 `guess` 变量中。这里使用 `&mut guess` 表示传递 `guess` 的可变引用,以便在函数中修改它的值。
    // `.expect("Failed to read line")` 表示如果读取行的操作失败,程序将抛出一个错误并显示指定的错误消息。
    io::stdin()
        .read_line(&mut guess)
        .expect("Failed to read line");

    // 打印用户的猜测,使用字符串插值 `{}` 将变量 `guess` 的值嵌入到输出字符串中
    println!("You guessed: {}", guess);
}

这个Rust程序实现了一个简单的用户输入互动,要求用户猜测一个数字。程序通过标准输入(stdin)获取用户的输入,并将输入存储在一个字符串变量中,然后将用户的猜测打印出来。注意到程序中使用了 &mut guess,表示对 guess 变量的可变引用,这是因为 read_line 函数需要修改传入的字符串以存储用户的输入。

Rust的变量默认不可变

  • Rust认为,应该显式地区分可变于不可变:默认变量和引用是不可变的,除非加上mut关键字

expect方法

version0.2

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

fn main() {
    println!("猜数游戏! !");
    let secret_number = rand ::thread_rng().gen_range(1, 101); // i32 u32 i64println!("神秘数字是:[}",secret number);
    loop{ 
        fprintln!("猜测一个数");
        let mut guess = string ::new();io::stdin().read_line(&mut guess).expect("无法读取行");                         
        // shadow
        let guess: u32 = match guess.trim().parse().expect("请输入数字!"); 
         println!("你猜测的数是: [}",guess);
         match guess.cmp(&secret_number) {
             Ordering::Less => println!("Too small!"), // arm分支
             Ordering::Greater => println!("Too big!"),
             Ordering :: Equal =>{
                 println!("vou win!");
                 break;
             } 
         }
     }

在 Rust 中生成随机数

Cargo.lock文件

  • Cargo.lock 是 Rust 项目中由 Cargo 工具自动生成和维护的一个文件。它的作用是锁定项目依赖的确切版本,以确保在不同的构建环境中构建时使用相同的依赖版本。具体来说,Cargo.lock 文件包含了每个依赖项及其精确版本号,以及该依赖项所依赖的所有其他库的版本信息。这样一来,当团队中的不同成员、CI/CD 系统或其他构建环境尝试构建项目时,它们都会使用相同的依赖版本,从而减少了构建过程中由于依赖项的版本不一致而引起的问题。

Rust变量隐藏操作

  • 在Rust中,变量隐藏(shadowing)是一种允许你在同一作用域内多次使用相同变量名的机制。通过变量隐藏,你可以定义一个新的同名变量,覆盖之前的变量,并且可以改变变量的类型。这对于一些需要在同一作用域内多次使用相同变量名的场景很有用。
相关推荐
深圳老胡6 分钟前
压力检测空吸功能硬件方案全解析:主流压力传感器品牌与实现路径
笔记·单片机·代码规范
程序猿追14 分钟前
返回 null 不一定入队成功:鸿蒙 KMP上的并发优先队列观察笔记
笔记·华为·harmonyos·kmp
~kiss~38 分钟前
PRO-LONG: Programmatic Memory Enables Long-Horizon Reasoning 程序式记忆赋能长程推理
学习
程序猿编码41 分钟前
不依赖 vLLM/llama.cpp:一套面向学习的 DeepSeek-R1 CUDA 推理实现
c++·学习·语言模型·llama·vllm·大模型推理
崔高杰1 小时前
【多论文阅读笔记】下一阶段,Agent记忆关注什么能力?
论文阅读·笔记
ms72wx1 小时前
Docker 命令学习笔记:从入门到进阶的实战指南
笔记·学习·docker
外收内放2 小时前
FastAPI猜字谜实战(4):让AI主持人开口
开发语言·python·学习·fastapi
叶子野格3 小时前
《JAVA学习:前置知识》
学习
NoteDeep 深度笔记3 小时前
排期看不出冲突?把任务表切成甘特图
笔记·个人开发·甘特图·笔记应用·深度笔记·云笔记
小猪佩奇TONY3 小时前
Linux 内核学习(19) --- linux swap 机制
linux·学习·swap·kswapd