循环时,.iter() 与引用 (&) 有何不同?

2024-04-29

在玩 Rust 时,我发现你可以循环Vecs and HashMaps(可能还有其他)通过引用,而不是使用.iter().

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

The .iter()函数似乎具有相同的行为。

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

这两种循环集合的方法在功能上是否相同,或者两者的行为之间是否存在细微的差异?我注意到.iter()在我发现的示例中似乎是普遍首选的方法。


两种循环集合的方法在功能上是否相同

是的,它们是相同的。

:

impl<'a, T> IntoIterator for &'a Vec<T> {
    type Item = &'a T;
    type IntoIter = slice::Iter<'a, T>;

    fn into_iter(self) -> slice::Iter<'a, T> {
        self.iter()
    }
}

:

impl<'a, K, V, S> IntoIterator for &'a HashMap<K, V, S>
    where K: Eq + Hash, S: HashState
{
    type Item = (&'a K, &'a V);
    type IntoIter = Iter<'a, K, V>;

    fn into_iter(self) -> Iter<'a, K, V> {
        self.iter()
    }
}

请注意,两者都只是调用iter().

我注意到 .iter() 似乎是我发现的示例中普遍首选的方法。

I use collection.iter()每当我想使用迭代器适配器时,我都会使用&collection每当我想直接迭代集合时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

循环时,.iter() 与引用 (&) 有何不同? 的相关文章

随机推荐

  • 将自定义操作添加到 UserModel 的管理页面

    是否有可能在 django UserModel 的管理页面中创建自定义操作 我希望自动将用户添加到组中 例如将他添加到员工中 设置一些额外的值等 当然还要创建收回这些更改的操作 感谢您的帮助 Import User在你的 admin py
  • 如何发送/接收 JSON?

    我知道这是一个愚蠢的问题 但我通常不进行 Web 编程 并且被要求发送一些 JSON 数据并接收一些回报 我用谷歌搜索 很清楚如何编码和解码 JSON 数据 但我对此很陌生 我不知道如何与给定的 URL 进行通信并说 这里有一些数据 请发回
  • 如何修复 Visual Studio 2015 Preview 上 SDL 2.0.3 未解析的外部问题?

    所以我收到以下错误 1 gt SDL2main lib SDL windows main obj error LNK2019 unresolved external symbol imp fprintf referenced in func
  • JMockit + Jetty 进行功能测试

    我在集成测试中使用 ShrinkWrap 启动 Jetty 服务器 Problem 示例项目中的 JUnit 测试试图模拟ForwardingServlet班级 但是 在这种具有嵌入式 Jetty Web 服务器的场景中 实际上有two该类
  • 获取 UIView 的当前角度/旋转/弧度?

    如何获取 UIView 当前的角度 旋转 弧度 你可以这样做 CGFloat radians atan2f yourView transform b yourView transform a CGFloat degrees radians
  • 使用 Maven 和 cxf-codegen-plugin 将 WSDL 客户端打包在 JAR 中

    我有一个 Maven 项目 它将使用许多 Web 服务 该应用程序将打包为 WAR 到目前为止 客户的代码已经生成cxf codegen plugin 在里面generate sources阶段 默认情况下 生成的源放入target gen
  • 使用 CDK 创建 ssh 密钥对/将其关联到 ec2 实例

    我正在使用新的云开发工具包 CDK 使用 Java 语言在 AWS 上构建基础设施 我在公共子网上使用堡垒主机与私有子网上的 RDS 实例进行通信 因此我通过堡垒主机上的 ssh 隧道从外部访问数据库 在私有子网上 我以这种方式创建了 Ba
  • 在 JavaScript 中实现撤消功能 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 javascript 中实现 ctrl z 经过多次谷歌搜索后 我偶然发现了 execCommand 我在用着document
  • 如何让 MediaRouteSelector 显示可用的 MiraCast 和 Chromecast 设备?

    我正在尝试让我的媒体路由选择器同时显示 MiraCast 和 Chromecast 设备 我有一个 Chromecast 接收器应用程序 并且还使用 Android 中的演示 API 因此理想情况下 用户只需单击媒体路由器按钮并选择他们拥有
  • bash:PWD 和 CURDIR 有什么区别?

    我的问题 我使用 Makefile 来运行docker runtarget 需要当前工作目录作为其参数之一 我使用任一 PWD or CURDIR build Dockerfile docker run lt PWD or CURDIR g
  • 如何在 .NET 4+ 中实现 ISerialized 而不违反继承安全规则?

    背景 野田时间 https nodatime org包含许多 可序列化的结构 虽然我不喜欢二进制序列化 但我们 早在 1 x 时间线中就收到了许多支持它的请求 我们通过实施ISerializable界面 我们最近收到了一份问题 报告 htt
  • 如何从一个端口为 Jetty 提供 https 和 http 服务?

    我知道这是一个重复的问题 但原始发帖者提出这个问题的原因是错误的 我并不是暗示我问它是为了right原因 但让我们看看 我们有一个在非标准端口号上运行的 Web 服务 尽管用户似乎能够记住端口号 但有时他们会错误地输入 http 而不是 h
  • C# 和 .NET 的“最佳”数据访问框架/方法是什么?

    编辑 我将其设为社区维基 因为它更适合协作格式 有多种方法可以从 NET 访问 SQL Server 和其他数据库 一切都有其优点和缺点 这永远不会是一个简单的问题 哪个是 最好的 答案永远是 这取决于 然而 我正在寻找在不同级别的系统背景
  • Meyers 的单例实现实际上是如何实现单例的

    我读了很多关于单例的内容 什么时候应该使用它们 什么时候不应该使用它们 以及如何安全地实现它们 我正在用 C 11 编写 并且遇到了 Meyer 的单例延迟初始化实现 如所示这个问题 https stackoverflow com ques
  • Typescript 使用装饰器获取参数值

    如何访问装饰器中方法参数的值 export const NullParameterCheck target Object key string index number gt how to get the value of the mark
  • distutils:如何将用户定义的参数传递给setup.py?

    如何将用户定义的参数从命令行和 setup cfg 配置文件传递到 distutils 的 setup py 脚本 我想编写一个 setup py 脚本 它接受我的包特定参数 例如 python setup py install foo m
  • 如何为 HTTP GET 的多个 Key-Value 参数设计 REST URI

    我正在设计一个 RESTful API 一项服务应该提供多个键值对的查询功能 例如 客户端可以使用一个 HTTP GET 请求来查询不同的产品及其关联的数量 客户想要查询金额为 44 的产品 1 和金额为 55 的产品 2 我实际上不希望我
  • 文件系统和 Memcached 哪个缓存更快/更好?

    我认为我还不清楚 从文件或从 memcached 读取内容更快吗 为什么 Memcached 速度更快 但内存有限 HDD 很大 但 I O 速度比内存慢 你应该把memcached 最热门的东西 and 所有其他人 can go 缓存文件
  • 处理异常后如何从上次尝试的指令继续执行帧?

    我想处理一个NameError通过将所需的缺失变量注入到帧中 然后从上次尝试的指令继续执行来抛出异常 下面的伪代码应该可以说明我的需求 def function return missing var try print function e
  • 循环时,.iter() 与引用 (&) 有何不同?

    在玩 Rust 时 我发现你可以循环Vecs and HashMaps 可能还有其他 通过引用 而不是使用 iter let xs vec 1 2 3 4 5 for x in xs println x x The iter 函数似乎具有相