当前位置: 首页 > 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) 单位圆坐标…...

如何高效清理重复图片?AntiDupl.NET智能去重工具详解

如何高效清理重复图片&#xff1f;AntiDupl.NET智能去重工具详解 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 在数字资产管理中&#xff0c;重复文件清理已成为提升…...

基于Apify与NLP的大麻监管情报系统架构与MCP集成实践

1. 项目概述&#xff1a;当AI遇见大麻监管情报如果你在合规、法律科技或者生命科学领域工作&#xff0c;最近可能听过“监管情报”这个词。简单说&#xff0c;它就是利用技术手段&#xff0c;从海量的、不断变化的法规文件中&#xff0c;自动提取、分析和监控关键信息&#xff…...

从原理到实践:详解Livox激光雷达与相机外参标定的ROS实现

1. 为什么需要激光雷达与相机标定&#xff1f; 在自动驾驶和机器人领域&#xff0c;激光雷达和相机是最常用的两种传感器。激光雷达能提供精确的三维距离信息&#xff0c;而相机则能捕捉丰富的纹理和颜色信息。但要让这两种传感器真正发挥11>2的效果&#xff0c;就必须解决…...

TrguiNG汉化版:三招彻底改变你的Transmission远程管理体验

TrguiNG汉化版&#xff1a;三招彻底改变你的Transmission远程管理体验 【免费下载链接】TrguiNG Transmission WebUI 基于 openscopeproject/TrguiNG 汉化和改进 项目地址: https://gitcode.com/gh_mirrors/tr/TrguiNG 你是否还在忍受Transmission原生的简陋Web界面&…...

Remix Icon终极指南:3200+免费矢量图标库的完整使用手册

Remix Icon终极指南&#xff1a;3200免费矢量图标库的完整使用手册 【免费下载链接】RemixIcon Open source neutral style icon system 项目地址: https://gitcode.com/gh_mirrors/re/RemixIcon 还在为项目寻找高质量的免费图标而烦恼吗&#xff1f;&#x1f914; 每天…...

QT实战:利用QAxObject与QAxWidget实现Office文档自动化,从数据填充到格式定制

1. 为什么需要Office文档自动化&#xff1f; 在企业日常运营中&#xff0c;文档处理是绕不开的环节。我见过太多同事每天花几个小时手动复制粘贴数据到Word报告和Excel表格里&#xff0c;不仅效率低下&#xff0c;还容易出错。想象一下&#xff0c;财务部门每月要生成上百份报…...

FigmaCN中文界面实战指南:深度解析浏览器插件本地化技术实现

FigmaCN中文界面实战指南&#xff1a;深度解析浏览器插件本地化技术实现 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN Figma作为全球领先的云端设计协作平台&#xff0c;其英文界面一…...

从零部署noVNC:一次完整的远程桌面服务搭建与排错实录

1. 为什么选择noVNC&#xff1f; 最近在帮朋友部署远程桌面服务时&#xff0c;发现很多传统VNC方案都需要安装客户端&#xff0c;操作复杂不说&#xff0c;兼容性还差。直到发现了noVNC这个神器&#xff0c;它直接用浏览器就能访问远程桌面&#xff0c;彻底解决了跨平台访问的痛…...

3D Tiles-Tools实战指南:如何高效处理大规模地理空间3D数据转换?

3D Tiles-Tools实战指南&#xff1a;如何高效处理大规模地理空间3D数据转换&#xff1f; 【免费下载链接】3d-tiles-tools 项目地址: https://gitcode.com/gh_mirrors/3d/3d-tiles-tools 在数字孪生、智慧城市和地理信息系统领域&#xff0c;大规模3D地理空间数据的高效…...

3大技术创新:重新定义Windows Android生态的工具体验

3大技术创新&#xff1a;重新定义Windows Android生态的工具体验 【免费下载链接】wsa-toolbox A Windows 11 application to easily install and use the Windows Subsystem For Android™ package on your computer. 项目地址: https://gitcode.com/gh_mirrors/ws/wsa-tool…...