rust入门基础案例:猜数字游戏
案例出处是《Rust权威指南》,书中有更加详细的解释。从这个例子中,我们可以了解到 rust 的两个操作:
- 如何从控制台读取用户输入
- rust 如何生成随机数
代码格式化
编译器可在保存时对代码做格式化处理,底层调用 rustfmt 来实现,代码内容基本和书中内容一致。代码中使用 use 语句显示的导入了标准库 std 中的 io 和 cmp 包,因为 rand包并不在标准库中,所以,我们在 dependencies 声明中引入 rand 包。
use rand::Rng;
use std::{cmp::Ordering, io};fn main() {let secret_number = rand::thread_rng().gen_range(1, 101);loop {let mut guess = String::new();io::stdin().read_line(&mut guess).expect("failed to read line");let guess: u32 = match guess.trim().parse() {Ok(num) => num,Err(err) => {println!("parse error: {err}");continue;}};match guess.cmp(&secret_number) {Ordering::Equal => {println!("success");break;}Ordering::Greater => println!("too big"),Ordering::Less => println!("too small"),}}
}
从控制台读取输入
io::stdin() 中的::语法声明stdin是io类型的一个关联函数,rust 会针对类型本身来定义函数,而不是针对某个特定实例,同样还有 String::new() 方法调用。
read_line 将控制台输入的内容存储到传入的参数中,同时返回 io::Result 类型值。这个类型属于枚举类型,rust 主要用来做错误处理。
生成随机数
针对 dependencies 中 rand 包的声明,rust 按照标准的语义化版本来处理版本号。版本声明中的 0.3.14实际上是^0.3.14的一个简写,它表示“任何与0.3.14版本公共API相兼容的版本”
[dependencies]
rand = "0.3.14"
程序最终使用的 rand 版本会记录在 Cargo.lock 文件中,通过 Cargo.lock 中详细的版本依赖信息,才保证了我们任何时候编译的结果都是相同的。除第一次构建程序外,再次构建程序时,Cargo 会优先检查 Cargo.lock,假如文件中存在已经指明具体版本的依赖库,那么它就会跳过计算版本号的过程,并直接使用文件中指明的版本。这使得我们拥有了一个自动化的、可重现的构建系统。
下面记录了 Cargo.lock 中记录了项目依赖的 rand 包详细信息:

当你确实想要升级某个依赖包时,Cargo提供了一个专用命令:update,它会强制Cargo忽略Cargo.lock
文件,并重新计算出所有依赖包中符合Cargo.toml 声明的最新版本。假如命令运行成功,Cargo就会将更新后的版本号写入Cargo.lock文件,并覆盖之前的内容。
相关文章:
rust入门基础案例:猜数字游戏
案例出处是《Rust权威指南》,书中有更加详细的解释。从这个例子中,我们可以了解到 rust 的两个操作: 如何从控制台读取用户输入rust 如何生成随机数 代码格式化 编译器可在保存时对代码做格式化处理,底层调用 rustfmt 来实现&a…...
vue-cli5.0.x优雅降级,配置项目兼容旧版浏览器
兼容低版本谷歌浏览器 vue-cli5.0.x脚手架下的,如何降低项目版本以适用于底版本的浏览器。 直接使用默认配置打包部署出来的项目再40,60、70版本的谷歌浏览器跑不起来,蓝屏或者浏览器白屏一般这种情况都需要通过Babel去做转换,我…...
关于RabbitMQ的小总结
问题:消息在转换机无法被路由 发布确认高级作用在生产者发送到转换机,回退消息作用在消息在转换机无法被路由的情况(消息无法路由的意思是,消息在转换机没有匹配到对应的队列),进行消息回退,打…...
webgoat靶场攻关
A(5) Broken Access Control Insecure Direct Object References 直接对象引用 直接对象引用是指应用程序使用客户端提供的输入来访问数据和对象。 例子 使用 GET 方法的直接对象引用示例可能如下所示 https://some.company.tld/dor?id12345 https…...
BEV-YOLO 论文学习
1. 解决了什么问题? 出于安全和导航的目的,自驾感知系统需要全面而迅速地理解周围的环境。目前主流的研究方向有两个:第一种传感器融合方案整合激光雷达、相机和毫米波雷达,和第二种纯视觉方案。传感器融合方案的感知表现鲁棒&am…...
C++可以使用负数作为下标索引
今天碰到一个题目,写bfs写炸了,发现好像数组越界,但是却没有报错,而是被边界检查拦截了 导致死循环了??? ps:所以写边界问题,首要的就是对边界进行检查,不检查越界之后…...
react+canvas实现横跨整个页面的动态的波浪线(贝塞尔曲线)
本来写这个特效 我打算用css实现的,结果是一波三折,我太难了,最终没能用css实现,转战了canvas来实现。来吧先看效果图 当然这个图的波浪高度、频率、位置、速度都是可调的,请根据自己的需求调整,如果你讲波…...
峰回网关数采PLC
1.网络配置 例如:plc地址是192.168.1.56 1.访问网关 峰回网关默认网关地址 192.168.3.18,或者(10.10.253.354),本案例按照3.18讲解。 1和1相连,0和电脑相连 本地电脑修改ip为192.168.3.3(和3…...
Vue+element el-date-picker 时间日期选择器设置默认值,选择框不显示问题(已解决)
时间选择器默认值的问题 显示的时候如果用下面的方式赋值将不会显示出来: this.deviceFormData.time[0] that.$filterArray.formatDatehh(start);this.deviceFormData.time[1] that.$filterArray.formatDateEnd(end);实际上是有数据的,但是不会显示出…...
数据挖掘题目:根据规则模板和信息表找出R中的所有强关联规则,基于信息增益、利用判定树进行归纳分类,计算信息熵的代码
一、(30分)设最小支持度阈值为0.2500, 最小置信度为0.6500。对于下面的规则模板和信息表找出R中的所有强关联规则: S∈R,P(S,x )∧ Q(S,y )> Gpa…...
Reshape.XL 1.2 for Excel插件 Crack
特征 插件 Reshape.XL 包括 130 个基本可组合功能。使用它们,您可以快速轻松地进行非常复杂的数据转换和处理。它们的架构和基本定义受到 SQL 和 R 语言的强烈启发。 到目前为止,类似的功能只能通过脚本语言供程序员使用。借助 Reshape.XL 插件…...
开发知识点-PHP从小白到拍簧片
从小白到拍簧片 位异或运算(^ )引用符号(&)strlen() 函数base64_encode预定义 $_POST 变量session_start($array);操作符php 命令set_time_limit(7200)isset()PHP 命名空间(namespace)new 实例化类extends 继承 一个类使用另一个类方法error_reporti…...
飞书开发学习笔记(二)-云文档简单开发练习
飞书开发学习笔记(二)-云文档简单开发练习 一.云文档飞书开发环境API 首先还是进入开放平台 飞书开放平台:https://open.feishu.cn/app?langzh-CN 云文档相关API都在“云文档”目录中,之下又有"云空间",“文档”,“电子表格”&a…...
设计模式——命令模式(Command Pattern)+ Spring相关源码
文章目录 一、命令模式定义二、例子2.1 菜鸟教程例子2.1.1 定义命令类接口2.1.2 定义命令执行者2.1.3 被处理对象Stock。2.1.4 封装处理Stock的命令 2.2 JDK源码——Runnable2.2.1 命令接口2.2.2 命令处理者2.2.3 命令实现类 2.3 SpringMVC——Controller2.3.1 请求对象 handle…...
[开源]企业级在线办公系统,基于实时音视频完成在线视频会议功能
一、开源项目简介 企业级在线办公系统 本项目使用了SpringBootMybatisSpringMVC框架,技术功能点应用了WebSocket、Redis、Activiti7工作流引擎, 基于TRTC腾讯实时音视频完成在线视频会议功能。 二、开源协议 使用GPL-3.0开源协议 三、界面展示 部分…...
Scala语言用Selenium库写一个爬虫模版
首先,我将使用Scala编写一个使用Selenium库下载yuanfudao内容的下载器程序。 然后我们需要在项目的build.sbt文件中添加selenium的依赖项。以下是添加Selenium依赖项的代码: libraryDependencies "org.openqa.selenium" % "selenium-ja…...
ZZ038 物联网应用与服务赛题第I套
2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 (I卷) 赛位号:______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等; 2.竞赛任务中所使用的各类软件工…...
ClickHouse 学习之基础入门(一)
第 1 章 ClickHouse 入 门 ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),使用 C 语言编写,主要用于在线分析处理查询(OLAP),能够使用 SQL 查询实时生成分析数据报告。 …...
HttpClient基本使用
十二、HttpClient 12.1 介绍 HttpClient是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。 HttpClient作用: 发送HTTP请求接收响应数据 …...
力扣:150. 逆波兰表达式求值(Python3)
题目: 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数(运算对象)都可以是一个整数或者另一…...
SeqGPT-560M实现YOLOv8目标检测:智能图像分析实战
SeqGPT-560M实现YOLOv8目标检测:智能图像分析实战 1. 引言 在计算机视觉领域,目标检测一直是个核心且具有挑战性的任务。传统的YOLOv8模型虽然检测速度快、准确率高,但在处理复杂场景时,往往需要额外的语义理解能力来提升检测精…...
智能硬件适配引擎:让黑苹果EFI配置从技术难题到即插即用的革新方案
智能硬件适配引擎:让黑苹果EFI配置从技术难题到即插即用的革新方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 当你第三次尝试启动黑苹…...
Qwen3.5-4B-Claude-Opus-GGUF保姆级教程:从零启动Web问答服务全流程
Qwen3.5-4B-Claude-Opus-GGUF保姆级教程:从零启动Web问答服务全流程 1. 模型与平台介绍 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是一个基于Qwen3.5-4B的推理蒸馏模型,特别强化了结构化分析、分步骤回答以及代码与逻辑类问题的处理能力。…...
华为仓颉语言实战:除了‘hello world’,还能用数组和循环做什么?(数字统计案例详解)
华为仓颉语言实战:数字统计案例与核心语法深度解析 刚学会在仓颉语言中打印"hello world"的你,是否好奇这门新兴语言还能做什么?让我们从一个实际案例出发——统计正整数中各数字出现的频次。这个看似简单的任务,却能带…...
单机游戏多人化:Nucleus Co-Op的技术突破与实践指南
单机游戏多人化:Nucleus Co-Op的技术突破与实践指南 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 你是否曾梦想在同一台电脑上与朋友…...
MCU高级开发技巧:外设驱动与系统架构优化
MCU高级用法解析:从外设驱动到系统架构设计1. MCU开发中的标准化与创新在嵌入式系统开发领域,MCU(微控制器单元)作为核心控制器件,其开发过程需要遵循严格的工程规范。标准的开发流程包括对变量和函数的明确定义,确定其生命周期、…...
Windows下OpenClaw全流程指南:ollama GLM-4-7-Flash接入与技能扩展
Windows下OpenClaw全流程指南:ollama GLM-4-7-Flash接入与技能扩展 1. 为什么选择OpenClawGLM-4-7-Flash组合 去年我在处理日常办公自动化时,发现很多重复性工作既耗时又容易出错。尝试过各种RPA工具后,最终被OpenClaw的"AI智能体本地…...
零基础入门:收藏必备!从Agent概念到实战构建,小白也能掌握AI新趋势
本文系统梳理了AI Agent的核心概念、原理及构建模式,通过对比ReAct和Plan-and-Execute等主流模式,阐述了Agent如何从被动对话转向主动行动。文章详细介绍了构建Agent的思路和关键组件,如主程序、行为说明书和工具集,适合对AI Agen…...
颠覆式创新交互:桌面虚拟助手如何提升你的工作效率
颠覆式创新交互:桌面虚拟助手如何提升你的工作效率 【免费下载链接】BongoCat 让呆萌可爱的 Bongo Cat 陪伴你的键盘敲击与鼠标操作,每一次输入都充满趣味与活力! 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat 桌面虚拟助…...
HDLC(高级数据链路控制):从帧结构解析到C语言模拟实现
1. HDLC协议基础:从比特流到可靠传输 第一次接触HDLC协议时,我盯着那串01111110的标志位发了半天呆——这不就是个简单的比特序列吗?怎么就能成为整个协议的基础?后来在调试卫星通信模块时才发现,正是这个看似简单的设…...
