【Rust入门】猜数游戏

文章目录


前言

Rust是一种系统编程语言,它专注于速度、内存安全和并行性。学习Rust可以为你的编程技能库增添新的一笔。在这篇文章中,我们将通过一个简单的猜数游戏来介绍Rust的基本概念。这个游戏是一个很好的入门项目,因为它涉及到一些基本的编程概念,如变量、循环、输入/输出和条件语句。无论你是一位经验丰富的程序员,还是刚刚开始接触编程,我相信你都会从这个项目中学到一些有用的东西。


Rust的变量

变量可以被理解为一个存储信息的容器。你可以把它想象成一个储物箱,你可以在里面放东西(赋值),也可以从里面取东西(使用变量)。在编程中,我们使用变量来存储和操作数据。

在Rust中,你可以使用let关键字来定义一个变量。例如:

rust 复制代码
let x = 5;

这行代码定义了一个名为x的变量,并给它赋值为5。在Rust中,变量默认是不可变的,这意味着一旦一个变量被赋值,你就不能改变它的值。如果你想要一个可以改变的变量,你可以在let关键字前加上mut关键字。例如:

rust 复制代码
let mut y = 5;
y = 6; // 这是合法的,因为y是可变的

这段代码定义了一个可变的变量y,并首先将其设置为5,然后改变它的值为6。

Rust占位符

在Rust中,占位符主要用于格式化输出,特别是在打印变量值时。占位符被定义在一个字符串中,然后可以被变量的值替换。在Rust中,我们使用大括号 {} 作为占位符。

例如,如果你有一个变量 x 并想打印它的值,你可以这样做:

rust 复制代码
let x = 5;
println!("x的值是 {}", x);

在这个例子中,{} 是一个占位符,当 println! 函数运行时,它会被 x 的值替换,所以输出会是 "x的值是 5"。

此外,Rust的占位符还可以进行更复杂的操作,如指定宽度、精度和对齐方式等。例如:

rust 复制代码
println!("{:5}", 1);  // 输出 "    1",右对齐,宽度为5
println!("{:<5}", 1); // 输出 "1    ",左对齐,宽度为5
println!("{:.2}", 3.14159); // 输出 "3.14",保留两位小数

读取一行数据到变量里面

在Rust中,use关键字用于引入库或模块中的项。当你想要使用一个库或模块中的函数、结构体、枚举等时,你需要先用use关键字将它们引入到当前的作用域中。

例如,如果你想要使用标准库(std)中的io(io库是专门用于输入输出的),你可以这样做:

rust 复制代码
use std::io;

fn main() {
    //.....
}

use关键字在Rust中起到了简化代码和提高可读性的作用。

read_line()函数:
read_line()是Rust中的一个函数,它用于从标准输入(通常是用户在命令行中的输入)读取一行文本。这个函数非常有用,比如在你需要从用户那里获取输入时。

read_line()函数需要一个参数,这个参数必须是一个可变引用到一个String。这个String将被用作一个缓冲区,read_line()会将用户的输入读取到这个String中。

下面是一个使用read_line()的例子:

rust 复制代码
use std::io;

fn main() {
    let mut input = String::new();

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

    println!("You entered: {}", input);
}

在这个例子中,我们首先创建了一个新的String,然后我们调用io::stdin().read_line(&mut input)来读取用户的输入。&mut input是一个指向input的可变引用(&mut表示后面的变量是可变的),这样read_line()就可以修改input的内容。如果读取成功,用户输入的内容就会被存储在input中。

expect("Failed to read line")是用来处理可能的错误的。如果read_line()因为某种原因失败了(比如无法读取输入),它会返回一个Err值。expect()会检查Result是否是Err,如果是,它就会停止程序运行,并显示提供给它的消息,即"Failed to read line"。

示例代码

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

fn main() {
    println!("Guess the number:");

    let mut guess = String::new();

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

    println!("You guessed: {}", guess);
}

总结

通过完成这个猜数游戏,我们已经对Rust有了一个基本的了解。我们学习了如何使用变量、循环、输入/输出和条件语句,这些都是编程的基本构建块。我们还看到了Rust如何处理错误,以及它如何强制我们写出内存安全的代码。虽然我们还有很多东西要学,但这个项目已经给我们提供了一个坚实的基础,我们可以在此基础上继续探索Rust的更多功能。记住,最好的学习方法就是动手实践。所以,不要停下来,继续探索Rust吧!

相关推荐
平常心的技术小牛2 小时前
Qt-快速上手-QMenuBar
开发语言·qt
青 春 记 忆2 小时前
零基础入门Python11|Git实战:为任务管理器建立版本历史
开发语言·git·vscode·python·python3.11
To_OC2 小时前
从一行入口代码啃透 NestJS:工厂模式、装饰器和依赖注入是怎么串起来的
后端·设计模式·nestjs
Python私教2 小时前
多个项目怎么安全合并?先适配,再切换
后端·python·架构
Python私教4 小时前
从表格到管理系统:别先写页面,先补齐权限、流程和审计
数据库·后端·架构
余额瞒着我当琳4 小时前
C++--深拷贝三件套 + swap + 写时拷贝 + vector 扩容 + reserve
java·开发语言·c++
坐吃山猪4 小时前
WebClient内存配置解析
开发语言·springboot·webflux
北斗落凡尘4 小时前
LangGraph 入门实战(12)--使用MCP
后端·python·langchain
jdksjw5 小时前
同步与异步、阻塞与非阻塞、多线程、协程超详细讲解(Python并发编程从入门到精通)
开发语言·python
Zach_菠萝侠5 小时前
【DeepSeek Harness 研究】进化方向4:安全加固 思考、设计与实现
开发语言·安全·deepseek