Rust 语言的 for 循环用法

在 Rust 中,for 循环是一种用于迭代集合(如数组、切片、向量、字符串、映射、通道等)或其他可迭代对象的方式。Rust 的 for 循环语法相对直观,并且与许多其他编程语言中的 for 循环类似。

以下是 for 循环在 Rust 中的一些常见用法:

迭代数组或切片

let numbers = [1, 2, 3, 4, 5];for number in numbers.iter() {println!("{}", number);
}

或者,如果你确定 numbers 是可变的,并且你不需要返回所有权,可以直接使用 into_iter()

let numbers = [1, 2, 3, 4, 5];for number in numbers.into_iter() {println!("{}", number);
}

从 Rust 1.0 开始,可以使用更简洁的语法直接迭代数组:

let numbers = [1, 2, 3, 4, 5];for number in &numbers {println!("{}", number);
}

或者,如果数组是可变的,你可以直接迭代它:

let mut numbers = [1, 2, 3, 4, 5];for number in numbers.iter_mut() {*number *= 2; // 修改每个元素的值
}

迭代字符串中的字符

let text = "Hello, Rust!";for character in text.chars() {println!("{}", character);
}

迭代映射(HashMap)的键值对

use std::collections::HashMap;let mut scores = HashMap::new();
scores.insert("Alice", 100);
scores.insert("Bob", 90);for (name, score) in &scores {println!("{}: {}", name, score);
}

迭代范围

for i in 0..5 { // 不包含 5println!("{}", i);
}for i in 0..=5 { // 包含 5println!("{}", i);
}

迭代枚举值

enum Color {Red,Green,Blue,
}let colors = [Color::Red, Color::Green, Color::Blue];for color in colors.iter() {match color {Color::Red => println!("Red"),Color::Green => println!("Green"),Color::Blue => println!("Blue"),}
}

使用 C 风格的 for 循环

虽然 Rust 推荐使用迭代器的 for 循环,但有时你可能需要更底层的控制,可以使用 range 函数和 to 方法来创建一个范围,并使用 C 风格的 for 循环:

let mut sum = 0;
for i in 0..10 {sum += i;
}
println!("Sum: {}", sum);

使用 while 循环进行迭代

虽然这不是一个 for 循环,但有时候 while 循环可以用于实现类似的功能,尤其是在需要基于某种条件迭代时:

let mut i = 0;
while i < 5 {println!("{}", i);i += 1;
}

注意,Rust 中的 for 循环通常比 while 循环更受欢迎,因为它们提供了更清晰的语法,并且更易于理解和维护。在使用 for 循环时,通常不需要手动管理索引或迭代器,因为 Rust 会为你处理这些细节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/738821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

流畅的Python(十八)-使用asyncio包处理并发

一、核心要义 1. 对比一个简答的多线程程序和对应的asyncio版,说明多线程和异步任务之间的关系 2. 网络下载的异步版 3. 在异步编程中,与回调相比&#xff0c;协程显著提升性能的方式 二、代码示例 1、相关知识点 #!/usr/bin/env python # -*- coding: utf-8 -*- # Time …

算法50:动态规划专练(力扣514题:自由之路-----4种写法)

题目: 力扣514 &#xff1a; 自由之路 . - 力扣&#xff08;LeetCode&#xff09; 题目的详细描述&#xff0c;直接打开力扣看就是了&#xff0c;下面说一下我对题目的理解: 事例1&#xff1a; 输入: ring "godding", key "gd" 输出: 4. 1. ring的第…

RStudio更换R语言版本

今天下载R语言用于读取.xlsx文件的readxl包时&#xff0c;RStudio提示该包是使用R-4.3.3版本构建&#xff0c;而我现在使用的是R-4.3.2版本&#xff0c;所以需要升级一下R语言版本&#xff0c;这里先下载最新版本的R语言&#xff0c; 下载地址&#xff1a;The Comprehensive R…

Jenkins自动构建 CI/CD流水线学习笔记(从入门到入土,理论+示例)

文章目录 1、什么是Jenkins的流水线?2、流水线语法2.1、声明式流水线2.2、脚本化流水线 3、流水线示例3.1、使用声明式流水线的语法编写的 Jenkinsfile 文件3.2、Pipeline 各种语言示例3.2.1 Java&#xff1a;3.2.2 Node.js / JavaScript3.2.3 Python 4、一套完整的Devops Jen…

【ICCV21】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

文章目录 0. Abstract1. Introduction2. Related Work3. Method3.1 Overall Architecture3.2 Shifted Window based Self-Attention3.3 Architecture Variants 4. Experiments4.1 Image Classification on ImageNet-1K4.2 Object Detection on COCO4.3 Semantic Segmentation o…

基于JavaWeb开发的springboot网咖管理系统[附源码]

基于JavaWeb开发的springboot网咖管理系统[附源码] &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 &a…

【办公类-40-02】20240311 python模仿PPT相册功能批量插入照片,更改背景颜色 (家长会系列二)

作品展示——用Python插入PPT相册 背景需求&#xff1a; 马上就要家长会&#xff0c;我负责做会议前的照片滚动PPT&#xff0c;通常都是使用PPT的相册功能批量导入照片&#xff0c; 生成给一个新的PPT文件 更改背景颜色 设置4秒间隔&#xff0c;应用到全部 保存&#xff0c;改…

springboot单体项目链路日志跟踪及接口耗时

最近接触一个新的传统项目&#xff0c;在联调过程中&#xff0c;查看日志特别不方便&#xff0c;既无trackId&#xff0c;即无接口耗时&#xff0c;所以写了该博客。话不多说&#xff0c;直接上代码 1、实体类user package com.yk.domain;import lombok.Data;Data public cla…

【IVA】人工智能领域常用的术语(1)

在人工智能和机器学习领域&#xff0c;"检测"、"识别"和"分类"是常用的术语&#xff0c;它们在问题解决中有着不同的含义&#xff1a; 检测&#xff08;Detection&#xff09;&#xff1a;检测是指在图像或视频中定位和识别特定目标的过程。目标…

Hadoop伪分布式配置--没有DataNode或NameNode

一、原因分析 重复格式化NameNode 二、解决方法 1、输入格式化NameNode命令&#xff0c;找到data和name存放位置 ./bin/hdfs namenode -format 2、删除data或name&#xff08;没有哪个删哪个&#xff09; sudo rm -rf data 3、重新格式化NameNode 4、重新启动即可。

sheng的学习笔记- AI-类别不平衡问题

目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 什么是类别不平衡问题 类别不平衡&#xff08;class-imbalance&#xff09;&#xff0c;也叫数据倾斜&#xff0c;数据不平衡&#xff0c;就是指分类任务中不同类别的训练样例数目差别很大的情况。 例如有998个反例&#xf…

vue3全局引入element-plus后怎么使用Message进行消息提示

全局引入 main.ts import element-plus/dist/index.css 在需要使用提示的组件中引入 import { ElMessage } from element-plus 使用举例

Verilog刷题笔记37

题目&#xff1a;3位二进制加法器 Now that you know how to build a full adder, make 3 instances of it to create a 3-bit binary ripple-carry adder. The adder adds two 3-bit numbers and a carry-in to produce a 3-bit sum and carry out. To encourage you to actua…

html5cssjs代码 001 第一个网页

html5&css&js代码 001 第一个网页 一、代码二、解释 这是第一个网页&#xff0c;也是一个模板。 一、代码 <!-- 声明文档类型 --> <!DOCTYPE html> <html lang "zh-cn" ><!-- 页面头部开始 --><head ><!-- 设置页面标题 …

@Conditional注解详解

目录 一、Conditional注解作用 二、Conditional源码解析 2.1 Conditional源码 2.2 Condition源码 三、Conditional案例 3.1 Conditional作用在类上案例 3.1.1 配置文件 3.1.2 Condition实现类 3.1.3 Bean内容类 3.1.4 Config类 3.1.5 Controller类 3.1.6 测试结果 3…

Visual grounding-视觉定位任务介绍

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…

Spring Cloud Alibaba微服务从入门到进阶(一)

Springboot三板斧 1、加依赖 2、写注解 3、写配置 Spring Boot Actuator Spring Boot Actuator 是 Spring Boot 提供的一系列用于监控和管理应用程序的工具和服务。 SpringBoot导航端点 其中localhost:8080/actuator/health是健康检查端点&#xff0c;加上以下配置&#xf…

基于element-plus的Dialog选择控件

翻看之前工程师写的vue2的代码&#xff0c;很多都是复制、粘贴&#xff0c;也真是搞不懂&#xff0c;明明可以写一个控件&#xff0c;不就可以重复使用。很多前端总喜欢element搞一下&#xff0c;ant-design也搞一下&#xff0c;有啥意义&#xff0c;控件也不是自己写的&#x…

Python递归函数你用对了吗?

1.递归函数 递归函数&#xff1a;函数自己调用自己 2.需求 使用函数的方式&#xff0c;计算数字n的阶乘 # 5&#xff01; """ 5! 1 * 2 * 3 * 4 * 5 4! 1 * 2 * 3 * 4 3! 1 * 2 * 3 2! 1 * 2 1! 1综上可以总结出&#xff1a;n! n * (n - 1) "&qu…

什么是防静电晶圆隔离膜?一分钟让你了解抗静电晶圆隔离纸

防静电晶圆隔离膜&#xff0c;也被称为防静电蓄积纸、硅片纸、半导体晶圆盒内缓冲垫片等多种名称&#xff0c;是半导体制造和运输过程中的一种重要辅助材料。 该隔离膜具备多种特性&#xff0c;如防静电、无尘、不掉屑、强韧耐用等&#xff0c;这些特性使其在半导体制造和运输中…