Skip to content

Library for the calculation of seats according to different electoral methods.

License

Notifications You must be signed in to change notification settings

edugzlez/electosim-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ElectoSIM ~ Rust

crates.io docs.rs codecov

ElectoSIM is a Rust library for simulating elections using different voting systems.

Installation

Add this to your Cargo.toml:

[dependencies]
electosim = "0.2.1"

or add it directly from crates.io:

cargo add electosim

Usage

Using macro election!

use electosim::*;

fn main() {
    let candidacies = vec![
        candidacy!(2010, 9),
        candidacy!(1018, 4),
        candidacy!(86, 0),
        candidacy!(77, 0),
    ];

    let seats = 13;
    let method = Method::HAGENBASCHBISCHOFF;
    let cutoff = 0.1;

    let mut ele = election![candidacies, seats, method, cutoff];

    ele.compute().expect("Can not compute method");
    ele.results.iter().for_each(|c| println!("{:?}", c));
}

Directly with the compute_ method

use electosim::*;
use electosim::methods::divisor::compute_dhondt;

fn main() {
   let mut candidacies = vec![
        candidacy!(2010, 0),
        candidacy!(1018, 0),
        candidacy!(86, 0),
        candidacy!(77, 0),
    ];
   compute_dhondt(&mut candidacies, 13).unwrap();
   candidacies.iter().for_each(|c| println!("{:?}", c));
}

License

This project is licensed under the MIT License - see the LICENSE file for details.