pub struct Tally {Show 14 fields
pub first_choice: BTreeMap<char, usize>,
pub borda: BTreeMap<char, usize>,
pub winner: char,
pub rankings: usize,
pub unanimous_initial: bool,
pub deliberated: bool,
pub changed_votes: usize,
pub unanimous_final: bool,
pub tie_break: Option<String>,
pub judges: usize,
pub present: usize,
pub quorum: usize,
pub met_quorum: bool,
pub uncontested: Option<String>,
}Expand description
The mechanical count.
Fields§
§first_choice: BTreeMap<char, usize>First-choice votes per label.
borda: BTreeMap<char, usize>Borda points from the initial rankings, used only to break a tie.
winner: charThe winning label.
rankings: usizeHow many judges produced a usable ranking. A panel of one is not a consensus and must not be reported as a split.
unanimous_initial: boolDid every judge’s initial first choice agree?
deliberated: boolWas deliberation run?
changed_votes: usizeJudges who moved between their initial ranking and their final vote.
unanimous_final: boolDid the final votes agree?
tie_break: Option<String>How the tie was broken, when it had to be.
judges: usizeConfigured judge count — the size of the full panel. 0 when no
panel was asked (see uncontested), not the roster size a panel that
never sat would have had.
present: usizeJudges who actually contributed to the decision (not taken out by a rate limit and producing a usable rank or vote).
quorum: usizeHow many judges are required for a trustworthy verdict. Chosen as a
strict majority (judges / 2 + 1): a verdict backed by a minority must
never be presented as a healthy one, while a bare majority is still
real signal. A one-candidate run needs no quorum.
met_quorum: boolpresent >= quorum, or no quorum was required.
uncontested: Option<String>Why no panel was asked, when none was: a single viable candidate, or
a review-only run that never competed. None when judges actually
ranked and voted — including when too few of them survived to reach
quorum, which is a collapse and must keep reading as one.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Tally
impl<'de> Deserialize<'de> for Tally
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Tally
impl RefUnwindSafe for Tally
impl Send for Tally
impl Sync for Tally
impl Unpin for Tally
impl UnsafeUnpin for Tally
impl UnwindSafe for Tally
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more