Rust学习笔记002: 猜字游戏

version0.1

// 导入标准库中的 `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

use rand :: Rng;
use std :: cmp ::Ordering;
use std::io; // prelude // traitfn 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("无法读取行");                         // shadowlet 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 中生成随机数

  • https://crates.io/crates/rand
    在这里插入图片描述

  • 只需要在Cargo.toml中添加rand依赖

在这里插入图片描述

Cargo.lock文件

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

在这里插入图片描述

Rust变量隐藏操作

  • 在Rust中,变量隐藏(shadowing)是一种允许你在同一作用域内多次使用相同变量名的机制。通过变量隐藏,你可以定义一个新的同名变量,覆盖之前的变量,并且可以改变变量的类型。这对于一些需要在同一作用域内多次使用相同变量名的场景很有用。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring Security】快速入门之案例实操

目录 一、简介 1、什么是安全框架 2、主流的安全框架 3、为什么使用Spring Security 二、引言 1、什么是Spring Security 2、Spring Security工作原理 3、特点 三、快速入门 1、引入依赖 2、配置 3、启动测试 4、配置自定义账号密码 四、Web安全配置类 1.HttpSe…

智安网络|实现安全与网络功能一体化:SASE的全新安全策略

随着企业信息化和数字化程度的不断提升,网络安全面临着前所未有的挑战。传统的网络安全模式已经无法满足日益复杂的安全需求。在这一背景下,安全访问服务边缘(SASE)崭露头角,并逐渐成为新一代网络安全架构的关键概念。…

云上安全责任共担模型

对于传统自建物理服务器模式,用户需要承担所有的安全责任,负责从物理基础设施到上层应用的所有层面的安全体系构建。 云服务器的安全责任确实与物理服务器不同,云上的安全性是一种责任共担模式,其中云服务器ECS的安全责任需要你&…

Hive中支持毫秒级别的时间精度

实际上,Hive 在较新的版本中已经支持毫秒级别的时间精度。你可以通过设置 hive.exec.default.serialization.format 和 mapred.output.value.format 属性为 1,启用 Hive 的时间精度为毫秒级。可以使用以下命令进行设置: set hive.exec.defau…

分布式技术之故障恢复技术

文章目录 分布式故障基础知识故障类型故障检测故障恢复 分布式故障检测原理故障恢复策略 分布式故障基础知识 故障类型 在任何一个分布式系统中,故障都是不可避免的。这里的故障,通常包括两类: 一类是物理故障,比如硬盘损坏、断电…

异常检测 | Matlab基于GNN图神经网络的数据异常数据检测

异常检测 | Matlab基于GNN图神经网络的数据异常数据检测 目录 异常检测 | Matlab基于GNN图神经网络的数据异常数据检测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 Matlab基于GNN图神经网络的数据异常数据检测。其核心思想是学习一个函数映射。本次使用人类活…

浅谈数字孪生的应用与发展

1、数字孪生概念 ”数字孪生是充分利用物理模型、传感器更新、运行历史等数据,集成多学科、多物理量、多尺度、多概率的仿真过程,在虚拟空间中完成映射,从而反映相对应的实体装备的全生命周期过程。数字孪生是一种超越现实的概念,可以被视为一个或多个重要的、彼此依赖的装…

elasticsearch系列五:集群的备份与恢复

概述 前几篇咱们讲了es的语法、存储的优化、常规运维等等,今天咱们看下如何备份数据和恢复数据。 在传统的关系型数据库中我们有多种备份方式,常见有热备、冷备、全量定时增量备份、通过开发程序备份等等,其实在es中是一样的。 官方建议采用s…

easyrecovery软件2024免费版电脑文件数据恢复工具

easyrecovery怎么恢复文件?大家可以参考下文easyrecovery恢复文件步骤来操作,easyrecovery是一款很强大的数据恢复软件,那么我们该如何使用这款软件呢?一起来了解吧! 一:EasyRecovery Professional 是一款非常不错的数据恢复软件…

【链表OJ—链表的回文结构】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:…

前端基础:Vue搞笑白话文(工作之余瞎写)

1、data:{}与data(){return{}}这两个是个什么鬼? vue实例 new Vue({el:#app,data:{name:李四}}) 组件实例 const aaa Vue.extent({data(){return {name:}} }) 为什么Vue实例可以那么写而组件实例就不行了?原因就是因为在底层原理上,组件…

k8s集群通过helm部署skywalking

1、安装helm 下载脚本安装 ~# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 ~# chmod 700 get_helm.sh ~# ./get_helm.sh或者下载包进行安装 ~# wget https://get.helm.sh/helm-canary-linux-amd64.tar.gz ~# mv helm …

python使用openpyxl为excel模版填充数据,生成多个Sheet页面

目标:希望根据一个给定的excel模版,生成多个Sheet页面,比如模版: 示例程序 import openpyxlexcel_workbook openpyxl.load_workbook("模版.xlsx") for _i in range(3): # 比如填充3个页面# 复制模版sheet页&#x…

基于NXP I.MX8 + Codesys的工业软PLC解决方案

全新i.MX 8M Plus是一个混合人工智能SoC,将先进的嵌入式SoC与最新的人工智能/机器学习硬件NPU技术相结合,通过神经网络加速器,为边缘计算提供强大的机器学习能力,是i.MX 8M Plus一个最为突出的优势。WEC-IMX8P核心板特别适合在机器…

SpringBoot+拦截器(Interceptor)

记录一下SpringBoot的拦截器(Interceptor)使用 拦截器(Interceptor)是AOP面向切面编程的思想来实现的,对于只写代码的来说,具体如何实现不需要多关心,只需要关心如何去使用,会用在那些地方。 当http请求进入Springboot应用程序后…

GBASE南大通用-一文读懂如何用Zabbix监控GBase 8c

南大通用GBase 8c是基于openGauss3.0构建的一款多模多态的分布式数据库,支持行存、列存、内存等多种存储模式和单机、主备式、分布式等多种部署形态,具备多模多态、极高性能、极高可用、极致弹性、极致安全等特性,为金融、政务、互联网等行业…

CGAL的主成分分析

此软件包提供了分析二维和三维对象集的功能。它提供了所有有界对象的轴对齐边界框、质心和主成分分析的计算,以及加权点集的重心。请注意,与大多数CGAL软件包不同,该软件包使用近似方法(特别是线性最小二乘拟合)&#…

数据采集遇到验证码校验的一般破解方式简述

背景 百度自动采集是一种高效的数据采集方法,但是在采集过程中经常会遇到图片验证码的问题,从而导致采集失败。那么有没有什么方法可以绕过图片验证呢?本文将为您详细介绍。 解决方案 一、使用OCR技术识别验证码 OCR技术可以识别图片中的…

vue实现滑动切换:切换选项时滑块有滑动过渡的效果

效果图 思路: 1. 高亮的色块是独立的一个盒子,需要插入当前激活的内容用来撑开色块盒子的宽度,这样色块的宽度就会和当前激活的内容宽度一致,色块的字体颜色设置透明即可 2. 色块滑动的距离是读当前激活元素的offsetLeft&#x…

文献阅读:LoRA: Low-Rank Adaptation of Large Language Models

文献阅读:LoRA: Low-Rank Adaptation of Large Language Models 1. 文章简介2. 方法介绍3. 实验 & 结论 1. 基础实验 1. Bert系列模型2. GPT系列模型 2. 消解实验 1. 作用矩阵考察2. 中间维度考察3. 扰动程度分析 4. 总结 & 思考 文献链接:htt…