clean up warnings
This commit is contained in:
parent
755bc36084
commit
101db55d04
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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()];
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue