首页 > 其他分享 >番外-rust迭代器-iter()

番外-rust迭代器-iter()

时间:2025-01-16 18:10:02浏览次数:1  
标签:map 示例 番外 iter item let println rust

iter() 是 Rust 中的一个方法,它可以用于 可迭代的集合,返回一个 不可变的迭代器。这个方法使得你可以遍历集合中的元素。通常,iter() 适用于以下几种类型:

1. 数组(Array)

数组是固定大小的集合,iter() 可以用来遍历数组中的元素。

示例:

let arr = [1, 2, 3];
for item in arr.iter() {
    println!("{}", item);  // 输出: 1, 2, 3
}

2. 切片(Slice)

切片是对数组或 Vec 的视图,iter() 同样可以用来遍历切片中的元素。

示例:

let slice = &[1, 2, 3];
for item in slice.iter() {
    println!("{}", item);  // 输出: 1, 2, 3
}

3. Vec

Vec 是动态数组类型,iter() 可以用来遍历 Vec 中的元素。

示例:

let vec = vec![1, 2, 3];
for item in vec.iter() {
    println!("{}", item);  // 输出: 1, 2, 3
}

4. 字符串(String)

String 类型支持 iter(),但是它是以字符为单位进行迭代的,而不是字节。

示例:

let s = String::from("hello");
for c in s.chars() {
    println!("{}", c);  // 输出: h, e, l, l, o
}

5. HashMapHashSet

对于哈希表类型的集合,例如 HashMapHashSet,也可以使用 iter() 方法。对于 HashMapiter() 会返回一个迭代器,允许你访问键值对;对于 HashSet,则会返回集合中的元素。

示例:

use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("a", 1);
map.insert("b", 2);

for (key, value) in map.iter() {
    println!("{}: {}", key, value);  // 输出: a: 1, b: 2
}

6. BTreeMapBTreeSet

BTreeMapBTreeSet 也支持 iter(),它们会返回按照键排序的元素。

示例:

use std::collections::BTreeMap;
let mut map = BTreeMap::new();
map.insert(1, "a");
map.insert(2, "b");

for (key, value) in map.iter() {
    println!("{}: {}", key, value);  // 输出: 1: a, 2: b
}

7. VecDeque

VecDeque 是一个双端队列(deque),支持 iter(),使得你可以从两端遍历元素。

示例:

use std::collections::VecDeque;
let mut deque = VecDeque::new();
deque.push_back(1);
deque.push_back(2);
deque.push_back(3);

for item in deque.iter() {
    println!("{}", item);  // 输出: 1, 2, 3
}

8. LinkedList

LinkedList 是一个双向链表,它也支持 iter() 来进行迭代。

示例:

use std::collections::LinkedList;
let mut list = LinkedList::new();
list.push_back(1);
list.push_back(2);
list.push_back(3);

for item in list.iter() {
    println!("{}", item);  // 输出: 1, 2, 3
}

总结

iter() 方法适用于 所有实现了 IntoIterator trait 的类型,这些类型包括:

  • 数组(array)
  • 切片(slice)
  • VecVecDeque
  • 字符串(String)
  • 集合类型,如 HashMap, HashSet, BTreeMap, BTreeSet, LinkedList

iter() 返回的迭代器允许你访问集合中的元素,并且不改变原始数据。它对于遍历集合非常有用,并且通常与 for 循环一起使用。

标签:map,示例,番外,iter,item,let,println,rust
From: https://www.cnblogs.com/learnForLife/p/18675542

相关文章

  • 4. rust基础Vec-可变数组
    Vec基本知识定义Vec是一个存储堆分配的数据类型,可以动态改变大小。你可以将元素推送到Vec中,或者从其中删除元素。动态大小不像数组([T;N])那样大小固定,Vec的大小在运行时是可变的。你可以向Vec添加元素,也可以删除元素,甚至将它的容量增加或减少。如何使用Vec1.......
  • rust学习十七.1、async和await
    本文对应相关书籍17.1章节。先言:async和多线程没有什么密切关系,当然也不是毫无关系!一、async在rust到底是什么async中文的意思是异步,在编程中指的是:执行一段代码,主线程可以在等待完成之前,先做其它事情。如果有写过前端代码,就明白这个东西。例如经典的jquery的ajax默认就是异步......
  • 【YashanDB知识库】导入数据时报错:YAS-00008 type convert error:literal does not mat
    本文内容来自YashanDB官网,原文内容请见https://www.yashandb.com/newsinfo/7901522.html?templateId=1718516现象将数据通过SQL语气导入崖山时报错:YAS-00008typeconverterror:literaldoesnotmatchformatstring原因插入日期类型的字符串,不是配置参数DATE_FORMAT所指......
  • Rust程序Vec中存储的一般都是Box动态指针吗?
    Rust程序Vec中存储的一般都是Box动态指针吗?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU在Rust中,Vec<T>不是专门存储Box<T>或其他动态指针,而是存储类型T的值。具体来说,Vec<T>会按照值的类型T来管理数据,它通常使用堆分配内存来存储数据(对于较大的数据或当数据需要动态增长时......
  • Rust如何在代码中查看一个变量的数据类型?
    Rust如何在代码中查看一个变量的数据类型?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU在Rust中,你可以使用std::any::TypeId来查看一个变量的类型,但是这种方式通常用于调试或元编程,而不是日常开发的主要方法。Rust是强类型语言,通常在编译时就能检查类型,开发者无需显式查看类型。但......
  • Autopy 是一款基于 Python 和 Rust 的强大 GUI 自动化库
    Autopy是一款基于Python和Rust的强大GUI自动化库,它为开发者提供了简便且高效的API来模拟鼠标和键盘的操作、在屏幕上查找颜色和位图以及显示警报。这些功能使得Autopy成为了一个跨平台的自动化工具,适用于MacOSX、Windows以及支持XTest扩展的X11系统。跨......
  • 手机端rustdesk如何进行配置
    安装rustdesk客户端以后,可以按照下图填写配置信息手机版也是可以快速导入导出,可以方便从其他设备或者客户端直接导入配置信息,然后在本软件进行导入或者导出......
  • rustdesk如何开启远程教程
    手机端在软件底部选择【共享屏幕】,在共享屏幕里面选择启动服务。主控和被控手机同时都配置好了ID服务器的信息以后,在软件底部选择【连接】然后输入远程ID,选择连接就行了。提示输入密码,可以查看一下被控客户端的密码,或者可以给被控客户端设置固定密码。......
  • TrustRAG:增强RAG系统鲁棒性与可信度的创新框架
    在人工智能飞速发展的今天,大语言模型(LLMs)凭借其强大的语言处理能力在诸多领域大放异彩。检索增强生成(RAG)系统(面向企业RAG(RetrievalAugmentedGeneration)系统的多维检索框架)的出现,通过整合外部知识源进一步提升了LLMs的性能,使其能针对用户查询提供更准确、更具上下文相关性的......
  • Rust 和 Tesseract OCR 实现英文数字验证码识别
    Rust是一门注重内存安全并具有高性能的系统编程语言。它通过并发机制和零成本抽象提供了强大的功能。我们可以利用Rust的库来调用TesseractOCR实现验证码识别。一、安装与配置安装TesseractOCR同样,首先要在系统中安装TesseractOCR。Ubuntu(Linux):bashsudoaptupda......