From e403ab3b82d4b0d179ee6452eaa205b500f6a282 Mon Sep 17 00:00:00 2001 From: Jay Robson Date: Wed, 7 May 2025 13:26:13 +1000 Subject: [PATCH] improve header.rs --- src/header.rs | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/header.rs b/src/header.rs index 0719846..8464760 100644 --- a/src/header.rs +++ b/src/header.rs @@ -12,36 +12,32 @@ pub struct Header { impl Header { pub fn parse(row: quick_csv::Row, winners: usize) -> Result> { - let mut header = Header { - parties: Vec::new(), - candidates: Vec::new(), - winners, - }; + let mut parties = Vec::::new(); + let mut candidates = Vec::::new(); let mut parties_lookup = HashMap::<&str, usize>::new(); for col in row.columns()?.skip(6) { let [party, name] = col.split(':').next_array().ok_or("Missing ':'")?; if party == "UG" { // independents - header.candidates.push(Candidate { + candidates.push(Candidate { name: name.to_owned(), party_id: None, }); } else if let Some(party_id) = parties_lookup.get(party).copied() { - header.parties[party_id].member_ids.push(header.candidates.len()); - header.candidates.push(Candidate { + parties[party_id].member_ids.push(candidates.len()); + candidates.push(Candidate { name: name.to_owned(), party_id: Some(party_id), }); } else { - parties_lookup.insert(party, header.parties.len()); - header.parties.push(Party::new(name.to_owned())); + parties_lookup.insert(party, parties.len()); + parties.push(Party::new(name.to_owned())); } } - - Ok(header) + return Ok(Header { parties, candidates, winners }); } pub fn get_candidate_name(&self, index: usize) -> CandidateName { self.candidates[index].get_name(self)