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

【Rust】003-基础语法:流程控制

【Rust】003-基础语法:流程控制

文章目录

  • 【Rust】003-基础语法:流程控制
  • 一、概述
  • 二、if 表达式
    • 1、语法格式
    • 2、多个
    • 3、获取表达式的值
  • 三、循环
    • 1、loop:无限循环,可跳出
      • 无限循环
      • 跳出循环
      • 返回值
    • 2、while:条件循环,可跳出
    • 3、for:常用于访问集合
      • 访问集合:while 示例
      • 访问集合:for 示例
      • 对一个 range 进行循环
    • 4、labels:给循环加标签

一、概述

控制流是编程语言的一个重要概念。程序员通过控制流可以控制哪些代码要执行。在Rust中,最常见的两种控制流结构是if表达式和循环。

二、if 表达式

1、语法格式

这里的 condition 必须是 bool 类型

if condition {// code to execute if the condition is true
} else {// code to execute if the condition is false
}

2、多个

if condition1 {// code to execute if condition1 is true
} else if condition2 {// code to execute if condition1 is false and condition2 is true
} else {// code to execute if both conditions are false
}

3、获取表达式的值

正如这一小节的标题所说,if其实是一个表达式,具有返回值。

需要注意的是,if分支和else分支的返回值必须是同一类型

fn main() {let temperature = 20;let weather = if temperature >= 25 {"hot"} else {"cool"};println!("The weather today is {}.", weather);
}

三、循环

Rust中提供了三种循环方式,loopwhilefor

1、loop:无限循环,可跳出

无限循环

loop关键字会创建一个无限循环

loop {// code to execute repeatedly
}

跳出循环

想要从循环中跳出,需要配合break关键词使用,下面的代码也展示了 continue 的用法!

let mut counter = 0;loop {counter += 1;if counter < 5 {continue;}println!("Hello, world!");if counter >= 5 {break;}
}

返回值

fn main() {let target = 10;let mut sum = 0;let mut counter = 1;let result = loop {sum += counter;if sum >= target {break counter; // The value of counter will be returned from the loop as a result}counter += 1;};println!("The first number whose sum of all previous numbers is greater than or equal to {} is {}.", target, result);
}

2、while:条件循环,可跳出

while condition {// code to execute while the condition is true
}

3、for:常用于访问集合

访问集合:while 示例

fn main() {let numbers = [1, 2, 3, 4, 5];let mut index = 0;while index < numbers.len() {println!("The value is: {}", numbers[index]);index += 1;}
}

访问集合:for 示例

fn main() {let numbers = [1, 2, 3, 4, 5];for number in numbers {println!("The value is: {}", number);}
}

对一个 range 进行循环

这里的1..=3表示[1,3]这个区间的整数。如果是左闭右开,要写成1..3

fn main() {for x in 1..=3 {println!("x: {}", x);}
}

4、labels:给循环加标签

三种循环都支持!

当循环存在嵌套关系时,breakcontinue只会对最内层的循环生效。但是有时候我们希望可以对外层的循环做break或者continue,这时该怎么办?幸运的是,Rust 可以给循环加上标签,从而breakcontinue都可以直接操作标签。

fn main() {let x = 1;'outer: loop {let mut y = 1;'inner: loop {if y == 3 {y += 1;continue 'inner; // Skips to the next iteration of the 'inner loop}println!("x: {}, y: {}", x, y);y += 1;if y > 5 {break 'outer; // Breaks out of the 'inner loop}}}
}

带返回值

fn main() {let x = 1;let z = 'outer: loop {let mut y = 1;'inner: loop {if y == 3 {y += 1;continue 'inner; // Skips to the next iteration of the 'inner loop}println!("x: {}, y: {}", x, y);y += 1;if y > 5 {break 'outer y; // Breaks out of the 'inner loop}}};println!("z: {}", z);
}

相关文章:

【Rust】003-基础语法:流程控制

【Rust】003-基础语法&#xff1a;流程控制 文章目录 【Rust】003-基础语法&#xff1a;流程控制一、概述二、if 表达式1、语法格式2、多个3、获取表达式的值 三、循环1、loop&#xff1a;无限循环&#xff0c;可跳出无限循环跳出循环返回值 2、while&#xff1a;条件循环&…...

0829【综述】面向时空数据的区块链研究综述

摘要:时空数据包括时间和空间2个维度,常被应用于物流、供应链等领域。传统的集中式存储方式虽然具有一定的便捷性,但不能充分满足时空数据存储及查询等要求,而区块链技术采用去中心化的分布式存储机制,并通过共识协议来保证数据的安全性。研究现有区块链1.0、2.0和以Block-DAG为…...

MySQL高级篇(SQL优化、索引优化、锁机制、主从复制)

目录 0 存储引擎介绍1 SQL性能分析2 常见通用的JOIN查询 SQL执行加载顺序七种JOIN写法3 索引介绍 3.1 索引是什么3.2 索引优劣势3.3 索引分类和建索引命令语句3.4 索引结构与检索原理3.5 哪些情况适合建索引3.6 哪些情况不适合建索引4 性能分析 4.1 性能分析前提知识4.2 Expla…...

YOLOV8模型使用-检测-物体追踪

这个最新的物体检测模型&#xff0c;很厉害的样子&#xff0c;还有物体追踪的功能。 有官方的Python代码&#xff0c;直接上手试试就好&#xff0c;至于理论&#xff0c;有想研究在看论文了╮(╯_╰)╭ 简单介绍 YOLOv8 中可用的模型 YOLOv8 模型的每个类别中有五个模型用于检…...

springmvc:设置后端响应给前端的json数据转换成String格式

设置spring-mvc.xml: xml <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:context"http://www.springframework.org/schema/context"xmlns:xsi"http://www.w…...

Mac安装brew、mysql、redis

mac安装brew mac安装brewmac安装mysql并配置开机启动mac安装redis并配置开机启动 mac安装brew 第一步&#xff1a;执行. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"第二步&#xff1a;输入开机密码 第三…...

MLC-LLM 部署RWKV World系列模型实战(3B模型Mac M2解码可达26tokens/s)

0x0. 前言 我的 ChatRWKV 学习笔记和使用指南 这篇文章是学习RWKV的第一步&#xff0c;然后学习了一下之后决定自己应该做一些什么。所以就在RWKV社区看到了这个将RWKV World系列模型通过MLC-LLM部署在各种硬件平台的需求&#xff0c;然后我就开始了解MLC-LLM的编译部署流程和…...

Unity 之 参数类型之值类型参数的用法

文章目录 基本数据类型结构体结构体的进一步补充 总结&#xff1a; 当谈论值类型参数时&#xff0c;我们可以从基本数据类型和结构体两个方面详细解释。值类型参数指的是以值的形式传递给函数或方法的数据&#xff0c;而不是引用。 基本数据类型 基本数据类型的值类型参数&…...

VScode远程连接主机

一、前期准备 1、Windows安装VSCode&#xff1b; 2、在VSCode中安装PHP Debug插件&#xff1b; 3、安装好Docker 4、在容器中安装Xdebug ①写一个展现phpinfo的php文件 <?php phpinfo(); ?>②在浏览器上打开该文件 ③复制所有信息丢到Xdebug: Installation instr…...

【iOS】属性关键字

文章目录 前言一、深拷贝与浅拷贝1、OC的拷贝方式有哪些2. OC对象实现的copy和mutableCopy分别为浅拷贝还是深拷贝&#xff1f;3. 自定义对象实现的copy和mutableCopy分别为浅拷贝还是深拷贝&#xff1f;4. 判断当前的深拷贝的类型&#xff1f;(区别是单层深拷贝还是完全深拷贝…...

【计算机基础】Git从安装到使用,详细每一步!扩展Github\Gitlab

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…...

深入了解Docker镜像操作

Docker是一种流行的容器化平台&#xff0c;它允许开发者将应用程序及其依赖项打包成容器&#xff0c;以便在不同环境中轻松部署和运行。在Docker中&#xff0c;镜像是构建容器的基础&#xff0c;有些家人们可能在服务器上对docker镜像的操作命令不是很熟悉&#xff0c;本文将深…...

嵌入式开发-单片机学习介绍

一、单片机入门篇 单片机的定义和历史 单片机是一种集成了微处理器、存储器、输入输出接口和其他功能于一体的微型计算机&#xff0c;具有高度的集成性和便携性。单片机的历史可以追溯到20世纪70年代&#xff0c;随着微电子技术的不断发展&#xff0c;单片机逐渐成为了工业控…...

5、Spring之Bean生命周期源码解析(销毁)

Bean的销毁过程 Bean销毁是发送在Spring容器关闭过程中的。 在Spring容器关闭时,比如: AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); UserService userService = (UserService) context.getBean("userSe…...

开发多点触控MFC应用程序

当下计算机变得越来越智能化&#xff0c;越来越无所不能&#xff0c;触摸屏的普及只是时间问题了。 虽然鼠标和键盘不会很快就离开人们的视野&#xff0c;毕竟人们使用鼠标跟键盘已经成为一种习惯&#xff0c;但是处理信息或者说操作计算机的其他方法也层出不穷——比如触控技术…...

使用nlohmann json库进行序列化与反序列化

nlohmann源码仓库&#xff1a;https://github.com/nlohmann/json使用方式&#xff1a;将其nlohmann文件夹加入&#xff0c;包含其头文件json.hpp即可demo #include <iostream> #include "nlohmann/json.hpp" #include <vector>using json nlohmann::js…...

高教社杯数模竞赛特辑论文篇-2012年A题:葡萄酒的评价(附获奖论文)

目录 摘 要 一、问题重述 二、问题分析 2.1 问题一的分析 2.2 问题二的分析...

手写RPC——数据序列化工具protobuf

手写RPC——数据序列化工具protobuf Protocol Buffers&#xff08;protobuf&#xff09;是一种用于结构化数据序列化的开源库和协议。下面是 protobuf 的一些优点和缺点&#xff1a; 优点&#xff1a; 高效的序列化和反序列化&#xff1a;protobuf 使用二进制编码&#xff0c…...

【MATLAB第70期】基于MATLAB的LightGbm(LGBM)梯度增强决策树多输入单输出回归预测及多分类预测模型(全网首发)

【MATLAB第70期】基于MATLAB的LightGbm(LGBM)梯度增强决策树多输入单输出回归预测及多分类预测模型&#xff08;全网首发&#xff09; 一、学习资料 (LGBM)是一种基于梯度增强决策树(GBDT)算法。 本次研究三个内容&#xff0c;分别是回归预测&#xff0c;二分类预测和多分类预…...

Linux进程间通信的几种方式

分析&回答 管道&#xff08;pipe&#xff09;以及有名管道&#xff1a;管道可用于有亲缘关系进程间通信&#xff0c;有名管道克服了管道没有名字的限制&#xff0c;因此具有管道的所有功能之外&#xff0c;它还允许无亲缘关系进程间通信。信号&#xff08;Signal&#xff…...

别再为日期格式头疼了!Oracle TO_TIMESTAMP函数保姆级使用指南(含常见报错解决)

Oracle TO_TIMESTAMP实战&#xff1a;从混乱字符串到精准时间戳的避坑指南 刚接手一个数据迁移项目时&#xff0c;我对着几十万条格式各异的日期记录发愁——有"2023/12/01"这样的斜杠分隔&#xff0c;也有"01-Dec-23 14.30.00.123"带英文月份缩写和毫秒的…...

基于大数据技术的产品评价分析系统设计与实现

前言本研究聚焦于设计与实现一种基于大数据技术的产品评价分析系统&#xff0c;通过构建多层架构体系与融合多元技术方法&#xff0c;为企业决策提供智能化支撑。 研究采用分层架构设计理念&#xff0c;将系统划分为数据采集、存储、处理、分析与展示五大模块。数据采集层综合运…...

SiameseUIE部署指南:test.py中custom_entities字段详解

SiameseUIE部署指南&#xff1a;test.py中custom_entities字段详解 1. 概述 如果你正在使用SiameseUIE模型进行信息抽取&#xff0c;那么test.py脚本中的custom_entities字段就是你最需要关注的核心配置。这个看似简单的字段&#xff0c;实际上决定了模型如何精准地从文本中抽…...

小米智能家居与Home Assistant完美融合:打造高效智能家居生态

小米智能家居与Home Assistant完美融合&#xff1a;打造高效智能家居生态 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home 小米智能家居Home Assistant集成是由小米官方…...

Graphormer开源可部署意义:支撑国家AI for Science重大科技基础设施

Graphormer开源可部署意义&#xff1a;分子属性预测使用指南 1. 项目概述 Graphormer是一种基于纯Transformer架构的图神经网络模型&#xff0c;专门为分子图&#xff08;原子-键结构&#xff09;的全局结构建模与属性预测而设计。该模型在OGB、PCQM4M等分子基准测试中表现优…...

Kali Linux 2026.1 重磅发布,内核升至6.18

作为全球最受欢迎的渗透测试与安全审计Linux发行版,Kali Linux在2026年迎来了年度首发版本——Kali Linux 2026.1。这次更新不仅延续了每年“.1”版本的视觉刷新传统,更特别致敬BackTrack Linux 20周年,引入“BackTrack模式”,同时升级内核至6.18,并新增8款实用工具。无论…...

球机器人研究报告【202600001】

文章目录球机器人研究报告综合分析多智能体推箱子训练&#xff08;第100代/第300代&#xff09;一、意识流分析&#xff08;神经网络脉冲活动&#xff09;1. 热图&#xff08;consciousness_agent2_gen100_ep0_heatmap.png&#xff09;2. PCA&#xff08;主成分分析&#xff0c…...

EspNowBus:ESP32轻量级安全无线总线库

1. EspNowBus 项目概述 EspNowBus 是一个面向 ESP32 平台、以组&#xff08;Group&#xff09;为组织单元的轻量级 ESP-NOW 消息总线库&#xff0c;专为小型嵌入式无线网络&#xff08;典型规模 ≈6 节点&#xff09;设计。其核心工程目标并非追求最大吞吐或最广覆盖&#xff0…...

JPom结合Docker实现SpringBoot项目自动化构建与部署实战

1. 为什么你需要JPomDocker自动化部署方案 每次手动打包SpringBoot项目时&#xff0c;你是不是也经历过这样的痛苦&#xff1f;先在本地mvn clean package&#xff0c;然后scp上传到服务器&#xff0c;接着ssh连上去kill旧进程&#xff0c;最后nohup启动新jar包。更可怕的是半夜…...

2026年3月房产中介房源管理系统使用体验评测

在房产中介行业数字化转型的浪潮中&#xff0c;一款合适的房产中介房源管理系统能帮助经纪人高效处理房客源、规范业务流程、降低运营成本&#xff0c;甚至直接提升成交率。本文基于一线实操体验&#xff0c;对4款主流房产中介房源管理软件进行客观评测&#xff0c;包括全房源系…...