struct ThreadVoteCounter<'env, I, R> {
num_candidates: usize,
pascal: Option<&'env [Vec<I>]>,
keep_factors: Arc<RwLock<Vec<R>>>,
}Expand description
Helper state to accumulate votes in a worker thread.
Fields§
§num_candidates: usizeNumber of candidates in the election.
pascal: Option<&'env [Vec<I>]>Pre-computed Pascal triangle.
keep_factors: Arc<RwLock<Vec<R>>>Keep factors used in the current round.
Trait Implementations§
Source§impl<I, R> ThreadAccumulator<BallotImpl<BoxedFlatOrder>, VoteAccumulator<I, R>> for ThreadVoteCounter<'_, I, R>where
I: Integer,
for<'a> &'a I: IntegerRef<I>,
R: Rational<I>,
for<'a> &'a R: RationalRef<&'a I, R>,
impl<I, R> ThreadAccumulator<BallotImpl<BoxedFlatOrder>, VoteAccumulator<I, R>> for ThreadVoteCounter<'_, I, R>where
I: Integer,
for<'a> &'a I: IntegerRef<I>,
R: Rational<I>,
for<'a> &'a R: RationalRef<&'a I, R>,
Source§type Accumulator<'a> = (VoteAccumulator<I, R>, RwLockReadGuard<'a, Vec<R>>)
where
Self: 'a,
I: 'a,
R: 'a
type Accumulator<'a> = (VoteAccumulator<I, R>, RwLockReadGuard<'a, Vec<R>>) where Self: 'a, I: 'a, R: 'a
Type to accumulate inputs into.
Source§fn init(&self) -> Self::Accumulator<'_>
fn init(&self) -> Self::Accumulator<'_>
Creates a new accumulator to process inputs.
Source§fn process_item<'a>(
&'a self,
accumulator: &mut Self::Accumulator<'a>,
index: usize,
ballot: &Ballot,
)
fn process_item<'a>( &'a self, accumulator: &mut Self::Accumulator<'a>, index: usize, ballot: &Ballot, )
Accumulates the given input item.
Source§fn finalize<'a>(
&'a self,
accumulator: Self::Accumulator<'a>,
) -> VoteAccumulator<I, R>
fn finalize<'a>( &'a self, accumulator: Self::Accumulator<'a>, ) -> VoteAccumulator<I, R>
Converts the given accumulator into an output.
Auto Trait Implementations§
impl<'env, I, R> Freeze for ThreadVoteCounter<'env, I, R>
impl<'env, I, R> RefUnwindSafe for ThreadVoteCounter<'env, I, R>where
I: RefUnwindSafe,
impl<'env, I, R> Send for ThreadVoteCounter<'env, I, R>
impl<'env, I, R> Sync for ThreadVoteCounter<'env, I, R>
impl<'env, I, R> Unpin for ThreadVoteCounter<'env, I, R>
impl<'env, I, R> UnwindSafe for ThreadVoteCounter<'env, I, R>where
I: RefUnwindSafe,
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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