for 循环变量的声明方式

获取字符串中的第一个单词,for 循环中的 &value 声明比较特殊,结合图1编译器的提示,value 是一个 u8 类型。

fn get_first_world(s: &str) -> &str {let bytes = s.as_bytes();for (i, &value) in bytes.iter().enumerate() {if value == b' ' {return &s[0..i];}} &s[..]
}

在这里插入图片描述
如果将 &value 声明为 valuevalue的类型就变为 &u8,内部比较逻辑就需要对 value进行取值操作。

在这里插入图片描述
for 循环迭代返回的元素类型默认是 &i32,按照前面的思路,for 遍历参数声明为 &elemelem的类型便是 i32

在这里插入图片描述
在这里插入图片描述

两个例子中的 u8i32都是基础数值类型,赋值过程不涉及所有权转移,&elemelem 这两种声明方式没有本质区别。

在这里插入图片描述

数组元素是&str类型,for语句中elem的类型是&&str。如果for语句中的声明是&elem,那么,elem的类型就是&str

不过,&str类型并不是我预期的,原本希望的是String类型,而非引用类型&str。下面显示指定nums元素类型为String

在这里插入图片描述

程序正常通过编译。*elemStrig类型,但占位符_没有发生所有权转移。下面尝试赋值给新的变量_f

在这里插入图片描述

编译报错:cannot move out of *elem which is behind a shared reference。下面的遍历模式,报错信息也是如此。

不过,for循环中elem&elem的区别在于elem自身类型不同,后续处理模式都相同。下图中elem虽然是String类型,却没有对应值的所有权,也就无法进行赋值操作。

在这里插入图片描述

下图例子通过HashMap实现单词计数的功能,其中,word类型是&strcount类型是&mut i32count是指向HashMap关联值的可变引用,它的赋值过程符合RUST借用规则。

在这里插入图片描述

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

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

相关文章

Arthas 监听 Docker 部署的java项目CPU占比高的信息

1、Linux上安装Arthas wget https://alibaba.github.io/arthas/arthas-boot.jar2、docker ps 查看目标项目的容器ID 3、copy Arthas 到目标容器中 (注意有 😕 ) docker cp arthas-boot.jar d97e8666666:/4、进入到目标容器目录中 docker exec -it d97e8666666 /b…

【VScode】安装配置、插件及远程SSH连接

一、VSCode安装 二、配置安装插件 三、配置远程连接SSH 四、MinGW 一、VSCode安装 VS官网 Visual Studio Code - Code Editing. Redefined下载安装包: 二、配置安装插件 安装中文插件 配置字体为20 配置文件–>首选项->设置->Font Size为20 设置 VSC…

git stash 用法总结

目录 1,介绍场景1:场景2: 2,常用命令2.1,基础2.2,进阶1,存储时指定备注2,通过索引来操作指定的存储3,修改存储规则 2.3,查看 stash 修改的具体内容 1&#xf…

洛谷 P4552 [Poetize6] IncDec Sequence

挺好的一道思维题。 分析 因为是对区间修改,多次修改肯定会超时,很容易想到差分。 那么原题的对区间修改就可以转换为下面三个操作(均在差分数组中): 1. 任选一个数1 2. 任选一个数-1 3. 任选两个数1和-1 进一步考…

opencv-直方图均衡化

直方图均衡化是一种用于增强图像对比度的图像处理技术。它通过调整图像的灰度级别分布,使得图像中各个灰度级别的像素分布更均匀,从而提高图像的对比度。 在OpenCV中,你可以使用cv2.equalizeHist()函数来进行直方图均衡化。 以下是一个简单…

2023.11.22 -数据仓库的概念和发展

目录 https://blog.csdn.net/m0_49956154/article/details/134320307?spm1001.2014.3001.5501 1经典传统数仓架构 2离线大数据数仓架构 3数据仓库三层 数据运营层,源数据层(ODS)(Operational Data Store) 数据仓库层&#…

redis运维(十四) hash缓存案例

一 缓存案例 ① 需求 ② 个人理解 策略:不更新缓存,而是删除缓存大部分观点认为:1、做缓存不应该是去更新缓存,而是应该删除缓存2、然后由下个请求去缓存,发现不存在后再读取数据库,写入redis缓存 高并发场景下,到底先更新缓存还是先更…

ChatGPT/GPT4丨编程助手;AI画图;数据分析;科研/项目实现;提示词工程技巧;论文写作等

ChatGPT 在论文写作与编程方面也具备强大的能力。无论是进行代码生成、错误调试还是解决编程难题,ChatGPT都能为您提供实用且高质量的建议和指导,提高编程效率和准确性。此外,ChatGPT是一位出色的合作伙伴,可以为您提供论文写作的…

八、ffmpeg录制视频为yuv文件

前言 测试环境: ffmpeg的4.3.2自行编译版本windows环境qt5.12 图片的一些重要知识: RGB图片 位深度:每一个像素都会使用n个二进制位来存储颜色信息。每一个像素的颜色都是由红(Red)、绿(Green&#xff0…

java代码调用twitter-api用例实战

一、申请twitter开发者账号 首先先申请twitter开发者免费的API,要填写申请的内容,放心大胆地写,申请完,会提供免费的API接口。 以下是我申请到的三个免费API 申请完开始进行测试调用。 读官方文档账户认证那块:https…

Python基础教程: sorted 函数

嗨喽,大家好呀~这里是爱看美女的茜茜呐 sorted 可以对所有可迭代的对象进行排序操作, sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。 从新排序列表。 👇 👇 👇 更多精彩机密、教程…

【Mysql】[Err] 1293 - Incorrect table definition;

基本情况 SQL文件描述 /* Navicat MySQL Data TransferSource Server : cm4生产-200 Source Server Version : 50725 Source Host : 192.168.1.200:3306 Source Database : db_wmsTarget Server Type : MYSQL Target Server Version : 50725 File…