clean up warnings

This commit is contained in:
Jay Robson 2025-05-06 19:49:50 +10:00
parent 755bc36084
commit 101db55d04
4 changed files with 8 additions and 33 deletions

View File

@ -1,5 +1,3 @@
use std::rc::Rc;
use itertools::Itertools; use itertools::Itertools;
use crate::header::Header; use crate::header::Header;
@ -12,20 +10,13 @@ enum BallotType {
#[derive(Debug)] #[derive(Debug)]
pub struct Ballot { pub struct Ballot {
header: Rc<Header>,
collection_point_id: usize,
batch_id: usize,
paper_id: usize,
votes: Vec<usize>, votes: Vec<usize>,
weight: f64, weight: f64,
} }
impl Ballot { impl Ballot {
pub fn parse(row: quick_csv::Row, header: Rc<Header>) -> Result<Ballot, Box<dyn std::error::Error>> { pub fn parse(row: quick_csv::Row, header: &Header) -> Result<Ballot, Box<dyn std::error::Error>> {
let mut cols = row.columns()?; let cols = row.columns()?.skip(6).collect_vec();
let (_, _, _, collection_point_id, batch_id, paper_id) = cols.next_tuple().ok_or("Missing columns")?;
let cols = cols.collect_vec();
let mut votes: Vec<Option<usize>>; let mut votes: Vec<Option<usize>>;
let ty: BallotType; let ty: BallotType;
@ -58,10 +49,6 @@ impl Ballot {
}; };
Ok(Ballot { Ok(Ballot {
header,
collection_point_id: collection_point_id.parse()?,
batch_id: batch_id.parse()?,
paper_id: paper_id.parse()?,
weight: 1.0, weight: 1.0,
votes, votes,
}) })
@ -82,14 +69,5 @@ impl Ballot {
} }
return None; return None;
} }
pub fn count_all_with_decaying_weights(&self, scores: &mut [f64], enabled: &[bool]) {
let mut m = 0.5;
for &id in self.votes.iter() {
if enabled[id] {
scores[id] += m;
m *= 0.5;
}
}
}
} }

View File

@ -1,6 +1,5 @@
use std::rc::Rc; use std::rc::Rc;
use itertools::Itertools; use itertools::Itertools;
use crate::{ballot::Ballot, header::Header, score_item::{ScoreItem, ScoreItems}}; use crate::{ballot::Ballot, header::Header, score_item::{ScoreItem, ScoreItems}};
#[derive(Debug)] #[derive(Debug)]
@ -20,7 +19,7 @@ pub struct Counter {
impl Counter { impl Counter {
pub fn new<T: std::io::BufRead>(mut csv: quick_csv::Csv<T>, winners: usize) -> Result<Self, Box<dyn std::error::Error>> { pub fn new<T: std::io::BufRead>(mut csv: quick_csv::Csv<T>, winners: usize) -> Result<Self, Box<dyn std::error::Error>> {
let header = Header::parse(csv.next().ok_or("csv header missing")??, winners)?; let header = Rc::new(Header::parse(csv.next().ok_or("csv header missing")??, winners)?);
let mut ballots = Vec::new(); let mut ballots = Vec::new();
if winners > header.candidates.len() { if winners > header.candidates.len() {
@ -28,7 +27,7 @@ impl Counter {
} }
for row in csv { for row in csv {
ballots.push(Ballot::parse(row?, header.clone())?); ballots.push(Ballot::parse(row?, &header)?);
} }
let enabled = vec![true; header.candidates.len()]; let enabled = vec![true; header.candidates.len()];

View File

@ -1,7 +1,5 @@
use std::{collections::HashMap, rc::Rc}; use std::collections::HashMap;
use itertools::Itertools; use itertools::Itertools;
use crate::{candidate::{Candidate, CandidateName}, party::Party}; use crate::{candidate::{Candidate, CandidateName}, party::Party};
@ -13,7 +11,7 @@ pub struct Header {
} }
impl Header { impl Header {
pub fn parse(row: quick_csv::Row, winners: usize) -> Result<Rc<Header>, Box<dyn std::error::Error>> { pub fn parse(row: quick_csv::Row, winners: usize) -> Result<Header, Box<dyn std::error::Error>> {
let mut header = Header { let mut header = Header {
parties: Vec::new(), parties: Vec::new(),
candidates: Vec::new(), candidates: Vec::new(),
@ -43,7 +41,7 @@ impl Header {
} }
} }
Ok(header.into()) Ok(header)
} }
pub fn get_candidate_name(&self, index: usize) -> CandidateName { pub fn get_candidate_name(&self, index: usize) -> CandidateName {
self.candidates[index].get_name(self) self.candidates[index].get_name(self)

View File

@ -45,7 +45,7 @@ fn main() {
winners.extend_from_slice(&v); winners.extend_from_slice(&v);
} }
counter::Event::Lose(v) => { counter::Event::Lose(v) => {
eprintln!(" {index}: Lose: {}. {}, {}", header.get_candidate_name(v.index), v.value, Percent(v.value, total)); eprintln!(" {index}: Lose: {}, {}, {}", header.get_candidate_name(v.index), v.value, Percent(v.value, total));
} }
} }
} }