【发布时间】:2021-03-24 17:40:47
【问题描述】:
我的输入数据结构如下:
label_1
value_1
label_2
value_2
...
我的最终目标是将这些数据读入HashMap
我目前的工作方法是将偶数和奇数行放在两个单独的向量中,然后从两个向量中读取以添加到 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);
}
}
我想问一下如何在不通过向量的中间步骤的情况下实现这个结果?
【问题讨论】: