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 是一款非常不错的数据恢复软件…

在Django5中使用Websocket进行通信

Docker安装Redis docker run --restartalways -p 6379:6379 --name redis -d redis:7.0.12 --requirepass zhangdapeng520安装依赖 参考文档:https://channels.readthedocs.io/en/latest/installation.html pip install "channels[daphne]"展示聊天页…

js 常用方法举例说明50个

js 常用方法举例说明50个 JavaScript是一门广泛应用于Web开发的编程语言,它提供了丰富的方法来操作数据、处理事件、操作DOM等。以下是50个常用的JavaScript方法,每个方法都附有简单的说明和示例: getElementById: 通过元素的ID获…

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

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

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

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

华为电脑的IP地址:如何找到并管理?

​在现代科技的高速发展中,华为电脑已经成为了人们生活和工作中必不可少的重要工具。然而,对于很多用户来说,IP地址却是一个颇具挑战性的问题。在本文中,我们将会详细探讨华为电脑的IP地址在哪里找,并提供一些建议和技…

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…

Python单元测试模块Unittest测试代码简单示例

一、测试项目目录结构: 创建一个项目,目录中有Calculator.py与Demo_test_three.py两个源码文件。Calculator.py是被测试的代码,Demo_test_three.py是执行测试的代码。本示例建了两级目录。一级目录名称:my_unittest;二级目录名称…

基于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应用程序后…