pub trait NposSolver {
type AccountId: IdentifierT;
type Accuracy: PerThing128;
type Error: Debug + PartialEq;
// Required methods
fn solve(
to_elect: usize,
targets: Vec<Self::AccountId>,
voters: Vec<(Self::AccountId, VoteWeight, impl Clone + IntoIterator<Item = Self::AccountId>)>,
) -> Result<ElectionResult<Self::AccountId, Self::Accuracy>, Self::Error>;
fn weight<T: WeightInfo>(
voters: u32,
targets: u32,
vote_degree: u32,
) -> Weight;
}Expand description
Something that can compute the result to an NPoS solution.
Required Associated Types§
Sourcetype AccountId: IdentifierT
type AccountId: IdentifierT
The account identifier type of this solver.
Sourcetype Accuracy: PerThing128
type Accuracy: PerThing128
The accuracy of this solver. This will affect the accuracy of the output.
Required Methods§
Sourcefn solve(
to_elect: usize,
targets: Vec<Self::AccountId>,
voters: Vec<(Self::AccountId, VoteWeight, impl Clone + IntoIterator<Item = Self::AccountId>)>,
) -> Result<ElectionResult<Self::AccountId, Self::Accuracy>, Self::Error>
fn solve( to_elect: usize, targets: Vec<Self::AccountId>, voters: Vec<(Self::AccountId, VoteWeight, impl Clone + IntoIterator<Item = Self::AccountId>)>, ) -> Result<ElectionResult<Self::AccountId, Self::Accuracy>, Self::Error>
Solve an NPoS solution with the given voters, targets, and select to_elect count
of targets.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementors§
Source§impl<AccountId: IdentifierT, Accuracy: PerThing128> NposSolver for QuickDirtySolver<AccountId, Accuracy>
Available on crate feature runtime-benchmarks only.
impl<AccountId: IdentifierT, Accuracy: PerThing128> NposSolver for QuickDirtySolver<AccountId, Accuracy>
Available on crate feature
runtime-benchmarks only.