Compare commits

...

2 Commits

4 changed files with 84 additions and 4 deletions

80
Cargo.lock generated
View File

@ -2,11 +2,18 @@
# It is not intended for manual editing. # It is not intended for manual editing.
version = 4 version = 4
[[package]]
name = "autocfg"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]] [[package]]
name = "ballot-counter" name = "ballot-counter"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"itertools", "itertools",
"num",
"quick-csv", "quick-csv",
] ]
@ -25,6 +32,79 @@ dependencies = [
"either", "either",
] ]
[[package]]
name = "num"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
dependencies = [
"num-bigint",
"num-complex",
"num-integer",
"num-iter",
"num-rational",
"num-traits",
]
[[package]]
name = "num-bigint"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
dependencies = [
"num-integer",
"num-traits",
]
[[package]]
name = "num-complex"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
dependencies = [
"num-traits",
]
[[package]]
name = "num-integer"
version = "0.1.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
dependencies = [
"num-traits",
]
[[package]]
name = "num-iter"
version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
dependencies = [
"autocfg",
"num-integer",
"num-traits",
]
[[package]]
name = "num-rational"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
dependencies = [
"num-bigint",
"num-integer",
"num-traits",
]
[[package]]
name = "num-traits"
version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [
"autocfg",
]
[[package]] [[package]]
name = "quick-csv" name = "quick-csv"
version = "0.1.6" version = "0.1.6"

View File

@ -5,4 +5,5 @@ edition = "2024"
[dependencies] [dependencies]
itertools = "0.14.0" itertools = "0.14.0"
num = "0.4.3"
quick-csv = "0.1.6" quick-csv = "0.1.6"

View File

@ -1,5 +1,4 @@
use itertools::Itertools; use itertools::Itertools;
use crate::header::Header; use crate::header::Header;
#[derive(Copy,Clone,Debug,PartialEq)] #[derive(Copy,Clone,Debug,PartialEq)]

View File

@ -22,8 +22,8 @@ impl Counter {
}) })
} }
pub fn count_primaries(&self, ty: BallotType, running: &[bool]) -> Vec<u32> { pub fn count_primaries<T>(&self, ty: BallotType, running: &[bool]) -> Vec<T> where T: num::Num + Copy + std::ops::AddAssign {
let mut scores = vec![0; running.len()]; let mut scores = vec![T::zero(); running.len()];
for ballot in self.ballots.iter() { for ballot in self.ballots.iter() {
if ballot.ty != ty { if ballot.ty != ty {
@ -33,7 +33,7 @@ impl Counter {
if !running[id] { if !running[id] {
continue; continue;
} }
scores[id] += 1; scores[id] += T::one();
break; break;
} }
} }