当前位置: 首页 > news >正文

Rust学习总结之if,while,loop,for使用

 目录

一:if的使用

二:while的使用

三:loop的使用

四:for的使用


        本文总结的四种语句(if,while,loop,for)除了loop,其他的三个在C语言或者Python中都是常见并且常用的语句,在rust中增加了loop的用法,下面将详细学习一下这四种语句的使用

一:if的使用

fn main() {let num = 1;if num > 10{println!("number is {} large 10",num);}else {println!("number is {} less 10",num);}
}

运行结果:

number is 1 less 10

         上面是if条件判断语句的基本用法,if后边不需要用小括号(但是允许使用小括号,编译的时候会有告警提示),另外大括号{}是必须要的,C语言中单语句可以省略大括号,但是rust中不允许。当然在rust中if也支持if-else语法,另外if后面也可以有多个条件表达式

fn main() {let num = 5;if num > 10{println!("number is {} large 10",num);}else if num < 3 && num > 4{println!("number is {} less 10",num);}else {println!("number is {}",num);}
}

运行结果:

number is 5

另外对于简单的if判断,rust也支持一行写法,类似于python中的三元条件运算表达式

fn main() {let age = 18;let height = if age > 13 {175} else {150};println!("the height is {}",height);
}

运行结果:

the height is 175

 最后需要注意的是在rust中条件表达式必须是bool类型,不允许像C语言中非0就是真的写法


fn main() {let number = 3;if number {println!("Yes");}
}

运行结果:

二:while的使用

下面我们用while写一个从0循环加到100的语句

fn main() {let mut sum = 0;let mut index = 0;while index <= 100{sum += index;index += 1;}println!("The sum is: {}", sum);
}

运行结果:

The sum is: 5050

 上面的代码在调试的时候,假如最后一句打印没有的话,在C语言中是绝对没有问题的,但是在rust中会报sum没有使用

 目前rust的学习还不够深入,猜测可能是作用域的问题,待学习到后面再来探讨一下这个现象

当然在while循环过程中,如果想遇到某个条件要跳出while循环,也可以用break

fn main() {let mut sum = 0;let mut index = 0;while index <= 100{sum += index;index += 1;if index == 50{break;}}println!("The sum is: {}", sum);
}

运行结果:

The sum is: 1225

三:loop的使用

        loop语句在C语言中是没有的,在rust中引入了loop,给开发者多了一个选择。在C语言中假如我们要写一个循环,无法在开头和结尾判断是否继续进行循环,必须在循环体中间某处控制循环的进行。如果遇到这种情况,我们经常会在一个 while (true) 循环体里实现中途退出循环的操作。在Rust中loop就能很好的解决这个应用场景。当然loop的用法也很灵活

        还是上面的循环加到100例子,这里用loop来实现

fn main() {let mut sum = 0;let mut index = 0;loop{sum += index;index += 1;if index > 100{break;}}println!("The sum is: {}", sum);
}

运行结果:

The sum is: 5050

        loop 循环可以通过 break 关键字类似于 return 一样使整个循环退出并给予外部一个返回值。这是一个十分巧妙的设计,因为 loop 这样的循环常被用来当作查找工具使用,如果找到了某个东西当然要将这个结果交出去

fn main() {let s = ['f', 't', 'z', 'c', 's', 'd','n'];let mut i = 0;let location = loop {let ch = s[i];if ch == 'c' {break i;}i += 1;};println!(" 'c' 的索引为 {}", location);
}

运行结果:

'c' 的索引为 3

四:for的使用

        for循环可以说是一个万金油的循环结构,在C语言或者Python的开发过程中,for循环我用的非常多,当然while循环也会用,但是for循环相比while循环,一是结构上比较灵活,二是相对来说比while也安全些,特别是对于数组,可迭代结构的遍历非常方便

fn main() {let s = ['f', 't', 'z'];//遍历数组s,方法一for index in 0..s.len(){println!("遍历数组:s[{}]:{}",index,s[index]);}//遍历数组s,方法二for element in s.iter(){println!("遍历数组s:{}",element);}
}

运行结果:

遍历数组:s[0]:f
遍历数组:s[1]:t
遍历数组:s[2]:z
遍历数组s:f
遍历数组s:t
遍历数组s:z

可以看到rust中for循环的语法和Python非常像,看到了就有一种熟悉感。

好了!!!以上就是对rust条件判断和循环语句的学习总结,有不对的地方也欢迎批评指正,点个赞更好,嘻嘻嘻!!!

相关文章:

Rust学习总结之if,while,loop,for使用

目录 一&#xff1a;if的使用 二&#xff1a;while的使用 三&#xff1a;loop的使用 四&#xff1a;for的使用 本文总结的四种语句&#xff08;if&#xff0c;while&#xff0c;loop&#xff0c;for&#xff09;除了loop&#xff0c;其他的三个在C语言或者Python中都是常见…...

Java知识复习(十一)RabbitMQ

1、RabbitMQ简介 RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Protocol&#xff0c;高级消息队列协议&#xff09;的消息中间件 2、RabbitMQ核心概念 RabbitMQ 整体上是一个生产者与消费者模型&#xff0c;主要负责接收、存储和转发消息 3、Producer和…...

thinkphp图片压缩类

<?php namespace app\lib; /** * 图片压缩类&#xff1a;通过缩放来压缩。 * 如果要保持源图比例&#xff0c;把参数$percent保持为1即可。 * 即使原比例压缩&#xff0c;也可大幅度缩小。数码相机4M图片。也可以缩为700KB左右。如果缩小比例&#xff0c;则体积会更小。…...

如何将图数据库应用于电影智能推荐

导读 电影&#xff0c;是一种结合视觉与听觉的现代艺术。如今&#xff0c;电影已不单是人们娱乐消遣的生活方式&#xff0c;也逐渐成为国家文化软实力的重要标志之一。据有关数据统计&#xff0c;2021年中国影视行业市场规模达2349亿元&#xff0c;同比增长23.2%&#xff0c;预…...

CSS实现动画效果的菜单收起展开图标,html实现动画效果的箭头

效果 实现代码 此处JS代码引入了jquery <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>.menu-icon{position: absolute;left: 20%;top: 30%;transition: all .3s;}.menu-icon:before, .menu…...

大数据平台小结

搭建大数据平台启动流程1、启动Nginx服务&#xff08;在bdp-web-mysql服务中&#xff09;cd /usr/local/nginx/# 启动Nginx ./sbin/nginx# 查看端口是否存在 netstat -tunlp|grep 200012、启动zookeeper&#xff08;在bdp-executor-realtime123&#xff09;cd /app/bdp/apache-…...

力扣-139单词拆分

力扣-139单词拆分 1、题目 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 示例 1&#xff1a; 输入: s "…...

图机器学习-图神经网络

图神经网络 前面讲了图机器学习的一些传统方法&#xff0c;现在正式进入到课程的核心部分&#xff1a;图神经网络。 Design of GNN 那么图神经网络和我们之前接触的一些深度神经网络有什么不同呢&#xff1f; 对于别的类型的神经网络&#xff0c;往往我们都是处理一些类似网…...

配置Airbyte资源限制

资源限制有三种不同的级别配置&#xff1a;Instance-wide - 应用到Airbyte实例创建的Sync Job的所有容器上。Connector-specific - 应用到Airbyte实例创建的Sync Job的所有指定类型连接器的容器上Connection-specific - 应用到Airbyte实例创建的Sync Job的所有指定管道的容器上…...

python实现PCA降维画分类散点图并标出95%的置信区间

此代码以数据集鸢尾花为例&#xff0c;对其使用PCA降维后&#xff0c;绘制了三个类别的样本点和对应的置信圆&#xff08;即椭圆&#xff09;。先放效果图。 下面是完整代码&#xff1a; from matplotlib.patches import Ellipsedef plot_point_cov(points, nstd3, axNone, **…...

Mysql高级之索引结构详解

Mysql的索引详解1.索引定义2.索引结构2.1数据结构分析2.1.1熟知的数据结构2.1.2分析为什么这么多的数据结构不全适用于索引结构2.2Hash结构2.3B tree结构3.索引分类3.1聚集索引&#xff08;聚簇索引&#xff09;3.2非聚集索引&#xff08;稀疏索引&#xff09;3.3联合索引3.4主…...

【线程-J.U.C】

Lock J.U.C最核心组件&#xff0c;Lock接口出现之前&#xff0c;多线程的并发安全只能由synchronized处理&#xff0c;但java5之后&#xff0c;Lock的出现可以解决synchronized的短板&#xff0c;更加灵活。 Lock本质上是一个接口&#xff0c;定义了释放锁&#xff08;unlock&…...

docker布署spring boot jar包项目

目录docker 安装创建目录制作镜像启动容器查看日志docker 安装 Docker安装、详解与部署 创建目录 服务器中创建一个目录&#xff0c;存放项目jar包和Dockerfile 文件 mkdir /目录位置创建目录后创建Dockerfile文件&#xff0c;上传jar包到同一目录下 创建dockerfile vim Doc…...

极简Vue3教程--Pinia状态管理

Pinia&#xff08;发音为/piːnjʌ/&#xff0c;如英语中的“peenya”&#xff09;是最接近pia&#xff08;西班牙语中的菠萝&#xff09;的词&#xff1b;Pinia开始于大概2019年&#xff0c;最初是作为一个实验为Vue重新设计状态管理&#xff0c;让它用起来像组合式API&#x…...

常用的map转bean互转方法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 常用的map转bean互转方法一、hutool工具类二、fastjson工具类三、beanutils_BeanUtils工具类 不太好用四、cglib BeanMap工具类 不太好用五、reflect 反射来玩 不太好玩六、I…...

2.4G收发一体芯片NRF24L01P跟国产软硬件兼容 SI24R1对比

超低功耗高性能 2.4GHz GFSK 无线收发器芯片Si24R1&#xff0c;软硬件兼容NRF24L01P. Si24R1 是一颗工作在 2.4GHz ISM 频段&#xff0c;专为低功耗无线场合设计&#xff0c;集成嵌入式ARQ 基带协议引擎的无线收发器芯片。工作频率范围为 2400MHz-2525MHz&#xff0c;共有 126个…...

设计模式之七大原则(一)——单一职责原则、开放-关闭原则

目录一、设计模式的目的二、设计模式的七大原则1.单一职责原则2.开放-关闭原则一、设计模式的目的 设计模式的目的是为了提高代码重用性、可读性、可扩展性、可靠性&#xff0c;使得程序呈现出高内聚、低耦合的特性。 代码重用性&#xff08;相同功能的代码&#xff0c;不用多…...

C++ set、unordered_set、multiset它们之间的区别与一些使用方法(不断更新)

set、unordered_set、multiset是什么&#xff1f;以及它们之间的区别 首先&#xff0c;它们三个都是C标准库提供的关联容器中的一种。只不过set、multiset容器是有序的&#xff0c;而unordered_set容器是无序的 std::set 是 C 标准库中的一个容器&#xff0c;其存储的元素按设…...

hadoop调优

hadoop调优 1 HDFS核心参数 1.1 NameNode内存生产配置 1.1.1 NameNode内存计算 每个文件块大概占用150byte&#xff0c;如果一台服务器128G&#xff0c;能存储的文件块如下 128 (G)* 1024(MB) * 1024(KB) * 1024(Byte) / 150 Byte 9.1 亿 1.1.2 Hadoop2.x 在Hadoop2.x中…...

EM@三角函数诱导公式

文章目录诱导公式单位圆坐标和三角函数记忆口诀符号看象限奇变偶不变例常用诱导公式&#x1f388;常用部分(5对)倒数关系六种三角函数间的转换关系小结ReflectionsShifts and periodicity诱导公式 诱导公式 - 维基百科&#xff0c;自由的百科全书 (wikipedia.org) 单位圆坐标…...

是不是只能学IT互联网技术才有发展前途?

当然不是&#xff0c;三百六十行&#xff0c;行行出状元。 但我们需要认清一个现实是&#xff0c;我们正处于一个信息爆炸的时代&#xff0c;掌握紧跟潮流的技术&#xff0c;才可以让我们更自信地面对每天的生活&#xff0c;才有多余的精力、财力来享受生活。“人生在世&#…...

Linux 进程:exit和_exit的辨析

目录1.接口与函数2.缓冲区3.exit 与 _exit(1)_exit(2)exit这里来认识exit函数和 _exit接口 &#xff0c;它们的作用是类似的&#xff0c;都是在调用后退出程序&#xff0c;可以在程序的任何地方调用。 1.接口与函数 exit函数和_exit接口&#xff0c;一个函数&#xff0c;一个…...

智能电子标签——商超版价签

2.1英寸TFT黑白电子价签 ★ 快速变价&#xff0c;高效运营 ★ 市场实用&#xff0c;布局物联网未来 ★ 更好客户体验 ★ 降低系统成本&#xff0c;具备竞争力 ★ 2.1英寸黑白红电子价签 ★ 电池低能耗&#xff0c;常规使用三年 ★ 穿透力强不慣障碍 ★ 2.4G载波&#x…...

计算机网络自检

1 计网体系结构 因特网结构&#xff1a; 计网三个组成成分&#xff1a; 工作方式-其中2个部分&#xff1a; 功能-两个子网&#xff1a; 5个XAN分别是&#xff1a; 传输技术&#xff0c;两者的主要区别&#xff1a; 4种基本网络拓扑结构&#xff1a; 3种交换技术&#xff1a; 协…...

DC真实数据都有哪些?Filecoin为DC数据存储的解决方案又是什么?

对于生活在数字时代的我们而言&#xff0c;数据或许就和平日呼吸的空气一样&#xff0c;已经不需要我们再去思考其概念。我们的日常生活中无时无刻都有数据的身影&#xff0c;日常的购物消费、出行、学习、记录&#xff0c;当我们每天生活有数字化加持的小区里&#xff0c;工作…...

解决vscode无法自动更新

一&#xff0e;前言 要在&#xff56;&#xff53;&#xff43;&#xff4f;&#xff44;&#xff45;里面安装插件&#xff0c;被提示版本不匹配&#xff0c;然后得更新&#xff0c;然后我发现我的&#xff07;帮助&#xff07;菜单栏下没有检查更新&#xff0c;然后我去&…...

315线上知识竞赛答题活动方案及模板分享

315线上知识竞赛答题活动方案及模板分享在315国际消费者权益日来临之际&#xff0c; 很多单位推出有奖知识竞答&#xff0c; 希望大家在了解专业知识的同时&#xff0c; 还可以拿到自己喜欢的奖品&#xff01;这是消费者委员会和监管局联合举办的“315消费知识在线有奖竞答”活…...

论文复现-2:代码部分

以CONLL03数据集为例 文章目录1 整体框架2 数据结构2.1 原始数据集2.2 处理之后的数据集3 代码部分3.0 模型参数3.1 数据预处理3.2 模型方法3.1.1 定义表示的学习权重项的学习双塔模型3.2.2 forward3.3 损失函数3.4 训练与推理Ablation study训练实例1 整体框架 任务是实体识别…...

Linux开放的端口太多了?教你一招找出所有开放的端口,然后直接干掉!

基于服务器安全性维护的目的&#xff0c;查看所有开放的端口是通常采取的第一步&#xff0c;从中检查出可疑或者不必要的端口并将其关掉。关于查看开放的端口&#xff0c;方法不止一种&#xff0c;比如lsof 命令&#xff0c;还可以使用 ss 命令。 查看开放的端口 今天我们就介…...

mysql集群简介

集群的好处 高可用性&#xff1a;故障检测及迁移&#xff0c;多节点备份。 可伸缩性&#xff1a;新增数据库节点便利&#xff0c;方便扩容。 负载均衡&#xff1a;切换某服务访问某节点&#xff0c;分摊单个节点的数据库压力。 集群要考虑的风险 网络分裂&#xff1a;群集还…...

wordpress 游客留言/怎么自己开网站

前提条件&#xff1a; (1) zabbix服务器端已经成功安装并且运行。 (2) zabbix客户端已经成功建立并且运行。 1 下载并且安装msmtp软件 Wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2/download tar jxvf msmtp-1.4.32.tar.bz2 cd ms…...

网络营销推广的三斧/seo外链收录

word2vec是早期NLP的必要预处理过程&#xff0c;其用于生成词的向量表示&#xff08;embeding&#xff09;。 其将单词映射为固定长度的向量&#xff08;embeding向量&#xff09;&#xff0c;而通过向量表示可以更好地表达不同词之间的相关性&#xff0c;因此会使得后续的分类…...

莱西做网站/长沙关键词快速排名

无意间看到了我仍旧在这里的《每天一点canvas动画》的系列文章&#xff08;表示感谢&#xff09;&#xff0c;"粒子文字" 这节感觉很不错&#xff0c;研究了一下&#xff0c;因为原作者加入了几个与用户交互的属性可动态改变粒子文字动画的样式&#xff0c;且代码也抽…...

不断完善政府网站建设/谷歌浏览器搜索入口

android下的单元測试在AndroidManifest.xml文件里配置下面信息&#xff1a;在manifest节点下加入&#xff1a;<!-- 指定測试信息和要測试的包 --><instrumentationandroid:name"android.test.InstrumentationTestRunner"android:targetPackage"com.jxn…...

网站伪静态/西安企业网站seo

&#xfeff;&#xfeff;Activity、Service和线程应该是Android编程中最常见的几种类了&#xff0c;几乎大多数应用程序都会涉及到这几个类的编程&#xff0c;自然而然的&#xff0c;也就会涉及到三者之间的相互通信&#xff0c;本文就试图简单地介绍一下这三者通信的方式。想…...

南京做网站找哪家好/网址提交

前几天&#xff0c;eric已经发表了欧博旗舰RDS1电池数字界面转盘旗舰RDB1电池解码器开箱篇。开箱篇 | 试听欧博旗舰RDS1电池数字界面转盘旗舰RDB1电池解码器&#xff0c;支持roon、Tidal、MQA。本地播放评论篇。开盖照本地播放评论篇 | 试听欧博旗舰RDS1电池数字界面转盘旗舰RD…...