📜  rust 获取具有索引和值的列表中的项目 - Rust (1)

📅  最后修改于: 2023-12-03 15:04:58.021000             🧑  作者: Mango

Rust 获取具有索引和值的列表中的项目

在 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 的便捷语法和强类型保证了代码的可读性和稳定性,让我们能更加轻松地编写和维护代码。