My input data is structured as follows:
label_1
value_1
label_2
value_2
...
And my end goal is to read that data into a HashMap
My current working approach is to put even and odd lines in two separate vectors and then read from both vectors to add to Hashmap.
use std::io;
use std::io::prelude::*;
use std::collections::HashMap;
fn main() {
    
    let mut labels: Vec<String> = Vec::new();
    let mut values: Vec<String> = Vec::new();
     
    let stdin = io::stdin();
    /* Read lines piped from stdin*/
    for (i, line) in stdin.lock().lines().enumerate() {
    
        if i % 2 == 0 {
            /* store labels (even lines) in labels vector */
            labels.push(line.unwrap());
        } else {
            /* Store values (odd lines) in values vector */
            values.push(line.unwrap());
        }
    }
    println!("number of labels: {}", labels.len());
    println!("number of values: {}", values.len());
    
    /* Zip labels and values into one iterator */
    let double_iter = labels.iter().zip(values.iter());
    /* insert (label: value) pairs into hashmap */
    let mut records: HashMap<&String, &String> = HashMap::new();
    for (label, value) in double_iter {
        records.insert(label, value);
    }
}
I would like ask how to achieve this result without going though an intermediary step with vectors ?