📅  最后修改于: 2023-12-03 15:04:58.021000             🧑  作者: Mango
在 Rust 中,可以使用 Vec
来表示一个动态数组,其中的元素可以是任何类型。在处理 Vec
中的元素时,我们通常需要获取索引和值,这样才能更好地操作它们。
要获取 Vec
中的元素索引和值,可以使用 enumerate()
方法。这个方法会返回一个元组,其中第一个位置是索引,第二个位置是对应的值。
let v = vec!["a", "b", "c"];
for (i, e) in v.iter().enumerate() {
println!("Index: {}, Element: {}", i, e);
}
上面的代码可以输出以下内容:
Index: 0, Element: a
Index: 1, Element: b
Index: 2, Element: c
如果我们只需要值和它在 Vec
中的位置,可以使用 iter().zip()
方法,此方法可以将两个迭代器配对成一个迭代器。
let v = vec!["a", "b", "c"];
for (i, e) in v.iter().enumerate().zip(1..) {
println!("Position: {}, Element: {}", i, e.0);
}
上面的代码将会输出以下内容:
Position: 1, Element: a
Position: 2, Element: b
Position: 3, Element: c
在上面的例子中,我们使用了一个无限迭代器 1..
,来生成位置编号。
还有一种情况,我们需要查询某个特定值在 Vec
中的位置。这时,可以使用 position()
方法来查找。它返回找到的第一个位置的索引,如果没有找到则返回 None。
let v = vec!["a", "b", "c", "b", "c"];
match v.iter().position(|&x| x == "b") {
Some(i) => println!("Found at index: {}", i),
None => println!("Not found!"),
}
上面的代码将输出:
Found at index: 1
在这个例子中,我们使用了闭包传递给 position()
方法来查找元素值为 "b"
的项的位置。
通过上面的介绍,我们了解了如何在 Rust 中获取具有索引和值的列表中的项目。Rust 的便捷语法和强类型保证了代码的可读性和稳定性,让我们能更加轻松地编写和维护代码。