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 crate::header::Header;
@ -12,20 +10,13 @@ enum BallotType {
#[derive(Debug)]
pub struct Ballot {
header: Rc<Header>,
collection_point_id: usize,
batch_id: usize,
paper_id: usize,
votes: Vec<usize>,
weight: f64,
}
impl Ballot {
pub fn parse(row: quick_csv::Row, header: Rc<Header>) -> Result<Ballot, Box<dyn std::error::Error>> {
let mut cols = row.columns()?;
let (_, _, _, collection_point_id, batch_id, paper_id) = cols.next_tuple().ok_or("Missing columns")?;
let cols = cols.collect_vec();
pub fn parse(row: quick_csv::Row, header: &Header) -> Result<Ballot, Box<dyn std::error::Error>> {
let cols = row.columns()?.skip(6).collect_vec();
let mut votes: Vec<Option<usize>>;
let ty: BallotType;
@ -58,10 +49,6 @@ impl Ballot {
};
Ok(Ballot {
header,
collection_point_id: collection_point_id.parse()?,
batch_id: batch_id.parse()?,
paper_id: paper_id.parse()?,
weight: 1.0,
votes,
})
@ -82,14 +69,5 @@ impl Ballot {
}
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 itertools::Itertools;
use crate::{ballot::Ballot, header::Header, score_item::{ScoreItem, ScoreItems}};
#[derive(Debug)]
@ -20,7 +19,7 @@ pub struct 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>> {
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();
if winners > header.candidates.len() {
@ -28,7 +27,7 @@ impl Counter {
}
for row in csv {
ballots.push(Ballot::parse(row?, header.clone())?);
ballots.push(Ballot::parse(row?, &header)?);
}
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 crate::{candidate::{Candidate, CandidateName}, party::Party};
@ -13,7 +11,7 @@ pub struct 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 {
parties: 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 {
self.candidates[index].get_name(self)

View File

@ -45,7 +45,7 @@ fn main() {
winners.extend_from_slice(&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));
}
}
}