猜数游戏-Rust版
cargo new guessing_game 创建项目
输入任意内容,并打印出来
main.rs:
use std::io; // 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入
fn main() {
println!("猜数");
println!("猜测一个数");
let mut guess = String::new(); //String::new()返回一个String实例,创建一个空白的字符串
// 读取一行内容,放到guess里; (io::stdin()返回一个句柄)
io::stdin().read_line(&mut guess).expect("无法读取行");// 引用在Rust里默认也是不可变的,所以需要&mut
// {}为占位符,类似golang里的%s,%d
println!("你猜测的数是:{}", guess)
}
生成随机数
Cargo.toml
[package]
name = "guessing_game"
version = "0.1.0"
edition = "2018"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]
rand = "^0.3.14" # ^代表任何与0.3.14这个版本公共api兼容的版本都可以
rand包还依赖libc
use std::io;
// 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入
use rand::Rng; // trait,类似golang的接口,定义了很多方法
fn main() {
println!("猜数");
let secret_number = rand::thread_rng().gen_range(1, 101); // [a,b)
println!("神秘数字是{}", secret_number);
println!("猜测一个数");
let mut guess = String::new(); //String::new()返回一个String实例,创建一个空白的字符串
// 读取一行内容,放到guess里; (io::stdin()返回一个句柄)
io::stdin().read_line(&mut guess).expect("无法读取行");// 引用在Rust里默认也是不可变的,所以需要&mut
// {}为占位符,类似golang里的%s,%d
println!("你猜测的数是:{}", guess)
}
比较大小
use std::io;
use std::cmp::Ordering;
// 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入
use rand::Rng; // trait,类似golang的接口,定义了很多方法
fn main() {
println!("猜数");
// i32 u32 i64,不指定则默认i32
let secret_number = rand::thread_rng().gen_range(1, 101); // [a,b)
println!("神秘数字是{}", secret_number);
println!("猜测一个数");
let mut guess = String::new(); //String::new()返回一个String实例,创建一个空白的字符串
// 读取一行内容,放到guess里; (io::stdin()返回一个句柄)
io::stdin().read_line(&mut guess).expect("无法读取行");// 引用在Rust里默认也是不可变的,所以需要&mut
// shadow, 隐藏;(用同名变量隐藏旧变量)
// trim 去掉空格等
// parse 将字符创串装换为u32 类型
let guess: u32 = guess.trim().parse().expect("Please type a number!");
// {}为占位符,类似golang里的%s,%d
println!("你猜测的数是:{}", guess);
match guess.cmp(&secret_number) {
Ordering::Less => println!("Too small!"), //arm,类似分支吧
Ordering::Greater => println!("Too big!"), //arm,类似分支吧
Ordering::Equal => println!("You win!"), //arm,类似分支吧
}
}
做多次猜测,直到猜对
use std::io;
use std::cmp::Ordering;
// 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入
use rand::Rng; // trait,类似golang的接口,定义了很多方法
fn main() {
println!("猜数");
// i32 u32 i64,不指定则默认i32
let secret_number = rand::thread_rng().gen_range(1, 101); // [a,b)
println!("神秘数字是{}", secret_number);
loop {
println!("猜测一个数");
let mut guess = String::new(); //String::new()返回一个String实例,创建一个空白的字符串
// 读取一行内容,放到guess里; (io::stdin()返回一个句柄)
io::stdin().read_line(&mut guess).expect("无法读取行");// 引用在Rust里默认也是不可变的,所以需要&mut
// shadow, 隐藏;(用同名变量隐藏旧变量)
// trim 去掉空格等
// parse 将字符创串装换为u32 类型
let guess: u32 = match guess.trim().parse() { // match,是rust错误处理的惯用方式
Ok(num) => num,
Err(_) => continue, //_表示舍弃,不关心
};
// {}为占位符,类似golang里的%s,%d
println!("你猜测的数是:{}", guess);
match guess.cmp(&secret_number) {
Ordering::Less => println!("Too small!"), //arm,类似分支吧
Ordering::Greater => println!("Too big!"), //arm,类似分支吧
Ordering::Equal => {
println!("You win!");
break;
}
}
}
}
本文由 mdnice 多平台发布
相关文章:
猜数游戏-Rust版
cargo new guessing_game 创建项目 输入任意内容,并打印出来 main.rs: use std::io; // 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入fn main() { println!("猜数"); println!("…...
从零起步:学习数据结构的完整路径
文章目录 1. 基础概念和前置知识2. 线性数据结构3. 栈和队列4. 树结构5. 图结构6. 散列表和哈希表7. 高级数据结构8. 复杂性分析和算法设计9. 实践和项目10. 继续学习和深入11. 学习资源12. 练习和实践 🎉欢迎来到数据结构学习专栏~从零起步:学习数据结构…...
如何在浏览器中启用 WebGL 以使用 HTML5 3D 查看器
描述 WebCenter 中的 HTML5 3D Collada Viewer(自 14.1 以来新增)要求在浏览器中启用 WebGL。较旧的浏览器可能不支持此功能,或者要求用户首先显式启用此功能。本页介绍如何为所有主要浏览器启用此功能。WebGL 3D 查看器 本文是以下超级用户…...
【计算机协议】第一章——HTTP协议详解
前言 HTTP(Hypertext Transfer Protocol)即超文本传输协议,是一种用于传输超媒体文档(例如HTML)的应用层协议。HTTP协议采用C/S(客户端/服务器)模式,客户端发起请求,服务…...
【FAQ】安防监控视频汇聚平台EasyCVR接入GB国标设备,无法显示通道信息的排查方法
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…...
Matlab 生成一定信噪比的信号
文章目录 【 1. 信噪比 】【 2. 功率归一化 】2.1 实信号实噪声2.2 实信号复噪声 【 3. 能量归一化 】3.1 实信号实噪声3.2 实信号复噪声 【 4. 小结 】 【 1. 信噪比 】 信噪比公式 1 : S N R 10 ∗ l o g 10 P s P n 信噪比公式1:SNR10*log_{10}\frac…...
[国产MCU]-W801开发实例-定时器
定时器 文章目录 定时器1、定时器介绍2、定时器驱动API3、定时器使用示例本文将详细介绍如何使用W801的定时器模块。 1、定时器介绍 W801的定时器包含一个32-bit自动加载的计数器,该计数器由系统时钟经过分频后驱动。 W801有 6路完全独立定时器。实现了精确的定时时间以及中断…...
基于 CentOS 7 构建 LVS-DR 群集,配置nginx负载均衡。
基于 CentOS 7 构建 LVS-DR 群集。 关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld 安装ifconfig yum install net-tools.x86_64 -y 准备四台虚拟机 IP 用途 19.168.244.144 客户端 192.168.244.145 lvs 192.168.244.148 RS 192.168.244.149 RS 在DS上 …...
大数据——spark一文全知道
1、spark概述 spark是专为大规模数据处理而设计的快速通用计算引擎,与Hadoop的MapReduce功能类似,但它是基于内存的分布式计算框架,存储还是采用HDFS。 MapReduce和Spark的区别 MapReduce的MapReduce之间需要通过磁盘进行数据传递…...
Linux命令200例:telnet用于远程登录的网络协议(常用)
🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 &…...
使用 eBPF 在云中实现网络可观测性
可观测性是一种了解和解释应用当前状态的能力,也是一种知道何时出现问题的方法。随着在 Kubernetes 和 OpenShift 上以微服务形式进行云部署的应用程序越来越多,可观察性受到了广泛关注。许多应用程序都有严格的承诺,比如在停机时间、延迟和吞…...
linux安装部署gitlab全教程,包含配置中文
linux安装部署gitlab全教程,包含配置中文 大家好,我是酷酷的韩~ 1.前期准备 安装包下载地址 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 我这里选择的这个gitlab-ce-15.7.3-ce.0.el7.x86_64.rpm 还有一些相关依赖包(地址等审核过我放到…...
软考高级系统架构设计师系列论文八十:论企业信息化战略规划技术
软考高级系统架构设计师系列论文八十:论企业信息化战略规划技术 一、企业信息化相关知识点二、摘要三、正文四、总结一、企业信息化相关知识点 软考高级系统架构设计师:企业信息化战略与实施...
使用ChatGPT构建一个AIML聊天机器人是什么体验
使用ChatGPT构建一个AIML聊天机器人是什么体验,使用ChatGPT将C#代码转换为Swift代码以实现Swift版的Aiml聊天机器人,AIML(全名为Artificial Intelligence Markup Language)是一种基于XML模式匹配的人工智能标记语言,…...
[JavaWeb]【九】web后端开发-SpringBootWeb案例(菜单)
目录 一、准备工作 1.1 需求 1.2 环境搭建 1.2.1 准备数据库&表 1.2.2 创建springboot工程 1.2.3 配置application.properties & 准备对应实体类 1.2.3.1 application.properties 1.2.3.2 实体类 1.2.3.2.1 Emp类 1.2.3.2.2 Dept类 1.2.4 准备对应的Mapper、…...
vue 主组件把日期选择器给子组件props传obj值, 与子组件监听 watch对象或对象属性
1 主组件 1.1 :passObj 这种 非v-model ; change"DateChange"触发事件 <template> <div class"date-picker-panel"><el-date-picker v-model"value2" type"datetimerange" :picker-options"pickerOptions"…...
WebDAV之π-Disk派盘 + 一刻日记
一刻日记是一款日记、笔记和备忘录应用程序,旨在提供一个简单而专注的日记写作工具。它提供了一个干净、直观的界面,允许用户记录和管理他们的日常事务、个人情感、成就和目标等内容。 一刻日记的主要功能包括: – 创建和编辑日记、用户可以撰写和编辑自己的日记,记录重要…...
springboot aop实现接口防重复操作
一、前言 有时在项目开发中某些接口逻辑比较复杂,响应时间长,那么可能导致重复提交问题。 二、如何解决 1.先定义一个防重复提交的注解。 import java.lang.annotation.*;Inherited Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Do…...
ubuntu18.04复现yolo v8环境配置之CUDA与pytorch版本问题以及多CUDA版本安装及切换
最近在复现yolo v8的程序,特记录一下过程 环境:ubuntu18.04ros melodic 小知识:GPU并行计算能力高于CPU—B站UP主说的 Ubuntu可以安装多个版本的CUDA。如果某个程序的Pyorch需要不同版本的CUDA,不必删除之前的CUDA,…...
Yaml配置文件读取方法
在日常的代码中,有一些值是配置文件中定义的,这些值可以根据用户的要求进行调整和改变。这往往会写在yaml格式的文件中。这样开放程序给用户时,就可以不必开放对应的源码,只开放yaml格式的配置文件即可。 将配置文件中的值读入程…...
通达信数据获取革新:用MOOTDX构建极简股票分析系统全攻略
通达信数据获取革新:用MOOTDX构建极简股票分析系统全攻略 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在量化投资与金融数据分析领域,开发者常面临数据获取的三重困境&a…...
如何用LLVIP数据集提升夜间行人检测?YOLOv5实战教程(附避坑指南)
夜间行人检测实战:用LLVIP数据集优化YOLOv5模型的完整指南 当路灯成为城市夜晚唯一的光源,传统监控摄像头的视野开始变得模糊不清——这正是计算机视觉工程师在安防领域最常遇到的挑战之一。LLVIP数据集的出现为这一困境提供了突破性的解决方案…...
3分钟搞定Windows启动盘制作:WinDiskWriter让macOS用户告别复杂命令行
3分钟搞定Windows启动盘制作:WinDiskWriter让macOS用户告别复杂命令行 【免费下载链接】windiskwriter 🖥 A macOS app that creates bootable USB drives for Windows. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. …...
从零到一:OpenClaw对接百川2-13B量化模型的完整调试日志
从零到一:OpenClaw对接百川2-13B量化模型的完整调试日志 1. 项目背景与动机 上周在测试本地大模型自动化任务时,发现OpenClaw默认对接的Qwen模型对长文本处理容易截断。正好看到星图平台上线了百川2-13B量化镜像,显存需求仅10GB左右&#x…...
2026年最新出炉!汉中装修公司口碑排行榜大揭秘来了!
装修是一件大事,关乎着未来生活的品质和舒适度。在汉中,众多装修公司让人眼花缭乱,如何选择一家靠谱的装修公司成为了许多业主的难题。今天,我们就来揭秘2026年汉中装修公司口碑排行榜,重点推荐汉中恒丰装饰࿰…...
大模型学习进阶:收藏必备,小白程序员快速掌握RAG架构核心技术!
大模型学习进阶:收藏必备,小白程序员快速掌握RAG架构核心技术! 本文深入解析了RAG(检索增强生成)大模型的核心技术及其重要性,详细介绍了标准RAG、对话式RAG、纠正式RAG、自适应RAG、自我反思RAG、融合RAG、…...
避坑指南:华三vFW2000在ESXI虚拟机中的常见安装错误与解决方案
华三vFW2000虚拟防火墙在ESXI环境部署的深度排错手册 当你在深夜的机房盯着ESXI控制台里反复报错的vFW2000安装界面时,那种焦灼感我深有体会。去年某金融客户数据中心迁移项目中,我们团队连续遭遇了镜像校验失败、存储空间分配异常、虚拟网卡绑定错误等…...
计算机硕,是走算法岗还是开发岗?
咳咳,煮啵说句可能得罪人的话——这个问题本身就问错了。不是说这个问题不重要,而是大部分人在问这个问题的时候,脑子里的决策框架就是拧的。他们把”算法”和”开发”想象成两条泾渭分明的路,然后试图在岔路口做一个一劳永逸的选…...
别再傻傻分不清了!AUTOSAR里那三种接口到底怎么用?
AUTOSAR接口全解析:从快递员到内部电话的通信哲学 刚接触AUTOSAR的工程师们,面对琳琅满目的接口类型时,是否常有种"明明每个字都认识,连起来却看不懂"的困惑?就像第一次走进高级餐厅,面对三种看…...
开发者专属:OpenClaw调试Qwen3-32B镜像的3个高级技巧
开发者专属:OpenClaw调试Qwen3-32B镜像的3个高级技巧 1. 为什么需要调试OpenClaw与Qwen3-32B的交互 当我第一次在本地RTX 4090D上部署Qwen3-32B镜像并接入OpenClaw时,本以为开箱即用的组合会一帆风顺。但实际运行自动化任务时,发现三个典型…...
