Освоение итерации ключей и значений в Rust: раскрытие возможностей циклов for

Rust — мощный язык системного программирования, обеспечивающий эффективное и безопасное управление памятью. При работе с парами ключ-значение Rust предлагает различные методы их перебора с использованием циклов for. В этой статье мы рассмотрим несколько методов перебора пар ключ-значение в Rust, сопровождаемые примерами кода. Итак, давайте углубимся и раскроем возможности итерации «ключ-значение»!

Метод 1. Использование метода iter()
Метод iter()позволяет перебирать пары ключ-значение коллекции. Допустим, у нас есть HashMap с именем my_map:

use std::collections::HashMap;
fn main() {
    let mut my_map = HashMap::new();
    my_map.insert("key1", "value1");
    my_map.insert("key2", "value2");
    for (key, value) in my_map.iter() {
        println!("Key: {}, Value: {}", key, value);
    }
}

.

Метод 2: использование метода into_iter()
Метод into_iter()использует коллекцию, позволяя вам перемещать из нее пары ключ-значение. Вот пример использования BTreeMap:

use std::collections::BTreeMap;
fn main() {
    let mut my_map = BTreeMap::new();
    my_map.insert("key1", "value1");
    my_map.insert("key2", "value2");
    for (key, value) in my_map.into_iter() {
        println!("Key: {}, Value: {}", key, value);
    }
}

Метод 3: использование метода iter_mut()
Метод iter_mut()обеспечивает изменяемый доступ к парам ключ-значение, что позволяет вам изменять их. Рассмотрим следующий пример с изменяемым HashMap:

use std::collections::HashMap;
fn main() {
    let mut my_map = HashMap::new();
    my_map.insert("key1", "value1");
    my_map.insert("key2", "value2");
    for (key, value) in my_map.iter_mut() {
        *value = "updated value";
        println!("Key: {}, Value: {}", key, value);
    }
}

Метод 4: использование метода for_each
Метод for_eachдоступен для коллекций, реализующих признак IntoIterator. Это позволяет вам выполнять действие над каждой парой ключ-значение. Вот пример использования Vec кортежей:

fn main() {
    let my_vec = vec![("key1", "value1"), ("key2", "value2")];
    my_vec.into_iter().for_each(|(key, value)| {
        println!("Key: {}, Value: {}", key, value);
    });
}

В этой статье мы рассмотрели несколько методов перебора пар ключ-значение в Rust с использованием циклов for. Мы рассмотрели такие методы, как iter(), into_iter(), iter_mut()и for_each(). Используя эти методы, вы можете эффективно работать с парами ключ-значение в своих проектах Rust. Не забудьте выбрать метод, который лучше всего подходит для вашего конкретного случая использования. Приятного программирования на Rust!