【Rust入门】猜数游戏

文章目录

  • 前言
  • Rust的变量
  • Rust占位符
  • 读取一行数据到变量里面
  • 示例代码
  • 总结


前言

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


Rust的变量

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

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

let x = 5;

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

let mut y = 5;
y = 6; // 这是合法的,因为y是可变的

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

Rust占位符

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

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

let x = 5;
println!("x的值是 {}", x);

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

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

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

读取一行数据到变量里面

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

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

use std::io;

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

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

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

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

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

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"。

示例代码

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吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/777877.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

最佳 iPhone 解锁软件工具,可免费下载用于电脑操作的

业内专业人士表示&#xff0c;如果您拥有 iPhone&#xff0c;您一定知道忘记锁屏密码会多么令人沮丧。由于 Apple 的安全功能强大&#xff0c;几乎不可能在没有密码或 Apple ID 的情况下访问锁定的 iPhone。 “当我忘记密码时&#xff0c;如何在没有密码的情况下解锁iPhone&am…

银河麒麟V10 SP1 审计工具 auditd更新

前言 银河麒麟V10 SP1 审计工具 auditd 引发的内存占用过高&#xff0c; 内存使用率一直在 60% 以上&#xff0c; 内存一直不释放 排查 可以使用ps或者top查看系统进程使用情况 ps -aux|sort -k4nr|head -n 5 发现银河麒麟审计工具 auditd 一直占用内存不释放 解决 办法一…

Java视频点播网站

作者介绍&#xff1a;计算机专业研究生&#xff0c;现企业打工人&#xff0c;从事Java全栈开发 主要内容&#xff1a;技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流&#xff08;SCI论文两篇&#xff09; 上点关注下点赞 生活越过…

基于OpenCv的快速图片颜色交换,轻松实现图片背景更换

图片颜色更换 图片颜色转换 当我们有2张图片,很喜欢第一张图片的颜色,第2张图片的前景照片,很多时候我们需要PS进行图片的颜色转换,这当然需要我们有强大的PS功底,当然小编这里不是介绍PS的,我们使用代码完全可以代替PS 进行图片的颜色转换 图片颜色转换步骤: 步骤…

智慧校园-教职工管理系统总体概述

在当今信息化时代&#xff0c;智慧校园教职工管理系统成为了提升教育机构管理效能的重要工具。该系统巧妙融合了先进的信息技术&#xff0c;为教职工的日常管理带来了一场静悄悄的革命。它不仅是一个信息存储库&#xff0c;记录着每位教职工从加入到离开的完整职业轨迹&#xf…

AI 与数据的智能融合丨大模型时代下的存储系统

WOT 全球技术创新大会2024北京站于 6 月 22 日圆满落幕。本届大会以“智启新纪&#xff0c;慧创万物”为主题&#xff0c;邀请到 60 位不同行业的专家&#xff0c;聚焦 AIGC、领导力、研发效能、架构演进、大数据等热门技术话题进行分享。 近年来&#xff0c;数据和人工智能已…

3.pwn 函数调用流程,调用约定

前置准备 pop: Pop指令的作用是弹栈&#xff0c;将栈顶的数据弹出到寄存器&#xff0c;然后栈顶指针向下移动一个单位。 具体来说:如pop rax&#xff0c;作用就是mov rax[rsp];add rsp 8; push: Push指令的作用就是压栈&#xff0c;将栈顶指针向上移动一个单位的距离&#xf…

如何使用uer做多分类任务

如何使用uer做多分类任务 语料集下载 找到这里点击即可 里面是这有json文件的 因此我们对此要做一些处理&#xff0c;将其转为tsv格式 # -*- coding: utf-8 -*- import json import csv import chardet# 检测文件编码 def detect_encoding(file_path):with open(file_path,…

【已解决】“import ... =“ 只能在 TypeScript 文件中使用

现象 在使用 import 语法的时候&#xff0c;代码报红&#xff0c;提示&#xff1a;“import ... “ 只能在 TypeScript 文件中使用 原因 代码被 VSCode 解析成 TypeScript 语法 解决方案&#xff1a; 关闭 JavaScript 的验证启用即可。 mac 快捷方式&#xff1a;comman s…

秋招突击——7/4——复习{}——新作{最长公共子序列、编辑距离、买股票最佳时机、跳跃游戏}

文章目录 引言复习新作1143-最长公共子序列个人实现 参考实现编辑距离个人实现参考实现 贪心——买股票的最佳时机个人实现参考实现 贪心——55-跳跃游戏个人实现参考做法 总结 引言 昨天主要是面试&#xff0c;然后剩下的时间都是用来对面试中不会的东西进行查漏补缺&#xff…

蓝桥杯web组国三选手题纲解析和备赛技巧--经验分享

蓝桥杯web组赛题解析和杯赛技巧 **&#x1f389;&#x1f389;&#x1f389;欢迎来到我的博客,我是一名自学了2年半前端的大一学生,熟悉的技术是JavaScript与Vue.目前正在往全栈方向前进, 如果我的博客给您带来了帮助欢迎您关注我,我将会持续不断的更新文章!!!&#x1f64f;&am…

51单片机嵌入式开发:2、STC89C52操作GPIO口LED灯

STC89C52操作GPIO口LED灯 1 芯片介绍1.1 芯片类型1.2 芯片系列说明 2 GPIO引脚寄存器说明3 GPIO操作3.1 GPIO输入3.2 GPIO输出3.3 GPIO流水灯3.4 Protues仿真 4 总结 1 芯片介绍 1.1 芯片类型 芯片采用宏晶科技品牌下的STC89C52RC单片机 选择STC89C52RC系列STC89C58RD系列单片…

优雅谈大模型:揭开计算机视觉任务神秘面纱

人工智能在第四次工业革命发挥着至关重要的作用&#xff0c;它广泛的融入日常生活&#xff0c;例如Google助手、Siri、智能手机摄像头、社交媒体过滤器、自动标记、医疗成像、导航等&#xff0c;所有这些技术都切实的改进和增强日常活动的便利性和习惯。 大模型技术发展到现在…

【致知功夫 各随分限】成长需要时间,助人须考虑对方的承受程度

帮助他人需考虑各人的分限所能及的&#xff0c;初学圣学需时间沉淀&#xff0c;存养心性 任何人都应该受到教育&#xff0c;不应受到贫富、贵贱的差异而排除在教育之外&#xff0c;对于不同材质的学生&#xff0c;需要因材施教&#xff1b; 每天都有新的认知&#xff0c;大我…

蓄势高飞逐“新”空,卓翼飞思助力打造低空经济产业领域人才智库

2024年&#xff0c;“低空经济”首次写入政府工作报告&#xff0c;掀开新兴产业的崭新一页&#xff0c;而后迅速在全国各地呈现如火如荼的发展态势。这片蕴藏着巨大潜力和产业的蓝海&#xff0c;正蓄势聚能、乘势而起&#xff0c;站在发展的新风口上&#xff0c;面对新前景和新…

【文献解析】Voxelmap——一种自适应体素地图

Efficient and Probabilistic Adaptive Voxel Mapping for Accurate Online LiDAR Odometry 论文地址&#xff1a;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber9813516 代码&#xff1a;GitHub - hku-mars/VoxelMap: [RA-L 2022] An efficient and probabili…

2024年7月6日 (周六) 叶子游戏新闻

自动电脑内部录音器AutoAudioRecorder: 是一款免费的自动音频录制软件&#xff0c;可直接将电脑内部所有的声音录制成 mp3/wav 文件&#xff0c;包括音乐、游戏直播、网络会议、聊天通话等音频源。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 《不羁联盟》制作人&…

Java中的日期时间类详解(Date、DateFormat、Calendar)

1. Date类 1.1 概述 java.util.Date类表示特定的瞬间&#xff0c;精确到毫秒。Date类的构造函数可以把毫秒值转成日期对象。 继续查阅Date类的描述&#xff0c;发现Date拥有多个构造函数&#xff0c;只是部分已经过时&#xff0c;我们重点看以下两个构造函数 1.2 Date类构造…

【踩坑】探究PyTorch中创建稀疏矩阵的内存占用过大的问题

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 问题复现 原因分析 解决方案 碎碎念 问题复现 创建一个COO格式的稀疏矩阵&#xff0c;根据计算公式&#xff0c;他应该只占用约5120MB的内存&…

54、一维和二维自组织映射(matlab)

1、一维和二维自组织映射原理 一维和二维自组织映射&#xff08;Self-Organizing Maps, SOM&#xff09;是一种无监督的机器学习算法&#xff0c;通过学习输入数据的拓扑结构&#xff0c;将高维输入数据映射到低维的网格结构中&#xff0c;使得相似的输入数据点在映射空间中也…