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使用
目录 一:if的使用 二:while的使用 三:loop的使用 四:for的使用 本文总结的四种语句(if,while,loop,for)除了loop,其他的三个在C语言或者Python中都是常见…...
Java知识复习(十一)RabbitMQ
1、RabbitMQ简介 RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件 2、RabbitMQ核心概念 RabbitMQ 整体上是一个生产者与消费者模型,主要负责接收、存储和转发消息 3、Producer和…...
thinkphp图片压缩类
<?php namespace app\lib; /** * 图片压缩类:通过缩放来压缩。 * 如果要保持源图比例,把参数$percent保持为1即可。 * 即使原比例压缩,也可大幅度缩小。数码相机4M图片。也可以缩为700KB左右。如果缩小比例,则体积会更小。…...
如何将图数据库应用于电影智能推荐
导读 电影,是一种结合视觉与听觉的现代艺术。如今,电影已不单是人们娱乐消遣的生活方式,也逐渐成为国家文化软实力的重要标志之一。据有关数据统计,2021年中国影视行业市场规模达2349亿元,同比增长23.2%,预…...
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服务(在bdp-web-mysql服务中)cd /usr/local/nginx/# 启动Nginx ./sbin/nginx# 查看端口是否存在 netstat -tunlp|grep 200012、启动zookeeper(在bdp-executor-realtime123)cd /app/bdp/apache-…...
力扣-139单词拆分
力扣-139单词拆分 1、题目 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s "…...
图机器学习-图神经网络
图神经网络 前面讲了图机器学习的一些传统方法,现在正式进入到课程的核心部分:图神经网络。 Design of GNN 那么图神经网络和我们之前接触的一些深度神经网络有什么不同呢? 对于别的类型的神经网络,往往我们都是处理一些类似网…...
配置Airbyte资源限制
资源限制有三种不同的级别配置:Instance-wide - 应用到Airbyte实例创建的Sync Job的所有容器上。Connector-specific - 应用到Airbyte实例创建的Sync Job的所有指定类型连接器的容器上Connection-specific - 应用到Airbyte实例创建的Sync Job的所有指定管道的容器上…...
python实现PCA降维画分类散点图并标出95%的置信区间
此代码以数据集鸢尾花为例,对其使用PCA降维后,绘制了三个类别的样本点和对应的置信圆(即椭圆)。先放效果图。 下面是完整代码: 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聚集索引(聚簇索引)3.2非聚集索引(稀疏索引)3.3联合索引3.4主…...
【线程-J.U.C】
Lock J.U.C最核心组件,Lock接口出现之前,多线程的并发安全只能由synchronized处理,但java5之后,Lock的出现可以解决synchronized的短板,更加灵活。 Lock本质上是一个接口,定义了释放锁(unlock&…...
docker布署spring boot jar包项目
目录docker 安装创建目录制作镜像启动容器查看日志docker 安装 Docker安装、详解与部署 创建目录 服务器中创建一个目录,存放项目jar包和Dockerfile 文件 mkdir /目录位置创建目录后创建Dockerfile文件,上传jar包到同一目录下 创建dockerfile vim Doc…...
极简Vue3教程--Pinia状态管理
Pinia(发音为/piːnjʌ/,如英语中的“peenya”)是最接近pia(西班牙语中的菠萝)的词;Pinia开始于大概2019年,最初是作为一个实验为Vue重新设计状态管理,让它用起来像组合式API&#x…...
常用的map转bean互转方法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 常用的map转bean互转方法一、hutool工具类二、fastjson工具类三、beanutils_BeanUtils工具类 不太好用四、cglib BeanMap工具类 不太好用五、reflect 反射来玩 不太好玩六、I…...
2.4G收发一体芯片NRF24L01P跟国产软硬件兼容 SI24R1对比
超低功耗高性能 2.4GHz GFSK 无线收发器芯片Si24R1,软硬件兼容NRF24L01P. Si24R1 是一颗工作在 2.4GHz ISM 频段,专为低功耗无线场合设计,集成嵌入式ARQ 基带协议引擎的无线收发器芯片。工作频率范围为 2400MHz-2525MHz,共有 126个…...
设计模式之七大原则(一)——单一职责原则、开放-关闭原则
目录一、设计模式的目的二、设计模式的七大原则1.单一职责原则2.开放-关闭原则一、设计模式的目的 设计模式的目的是为了提高代码重用性、可读性、可扩展性、可靠性,使得程序呈现出高内聚、低耦合的特性。 代码重用性(相同功能的代码,不用多…...
C++ set、unordered_set、multiset它们之间的区别与一些使用方法(不断更新)
set、unordered_set、multiset是什么?以及它们之间的区别 首先,它们三个都是C标准库提供的关联容器中的一种。只不过set、multiset容器是有序的,而unordered_set容器是无序的 std::set 是 C 标准库中的一个容器,其存储的元素按设…...
hadoop调优
hadoop调优 1 HDFS核心参数 1.1 NameNode内存生产配置 1.1.1 NameNode内存计算 每个文件块大概占用150byte,如果一台服务器128G,能存储的文件块如下 128 (G)* 1024(MB) * 1024(KB) * 1024(Byte) / 150 Byte 9.1 亿 1.1.2 Hadoop2.x 在Hadoop2.x中…...
EM@三角函数诱导公式
文章目录诱导公式单位圆坐标和三角函数记忆口诀符号看象限奇变偶不变例常用诱导公式🎈常用部分(5对)倒数关系六种三角函数间的转换关系小结ReflectionsShifts and periodicity诱导公式 诱导公式 - 维基百科,自由的百科全书 (wikipedia.org) 单位圆坐标…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙
Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...
02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...
