utxo_scanner/
csv_loader.rs1
2use std::fs::File;
3use std::io::{BufRead, BufReader};
4use std::collections::BTreeMap;
5use std::io;
6use std::io::Write;
7
8pub fn load(csv_file: &str) -> BTreeMap<String, Vec<u64>> {
9
10 let file = File::open(&csv_file).unwrap_or_else(|e| {
12 panic!("Unable to open file due to error: {}", e);
13 });
14
15 let reader = BufReader::new(file);
17 let mut map: BTreeMap<String, Vec<u64>> = BTreeMap::new();
18
19 let mut line_num = 0;
21 for line in reader.lines() {
22
23 if line_num == 0 {
24 line_num += 1;
25 continue;
26 }
27
28 let line = line.unwrap();
29 let parts: Vec<_> = line.split(",").collect();
30
31 let address = format!("{}", parts[3]);
33 map.entry(address).or_insert(Vec::new()).push(line_num as u64);
34 line_num += 1;
35
36 if line_num % 10000 == 0 {
37 print!(".");
38 io::stdout().flush().unwrap();
39 }
40 }
41
42 map
43}
44
45