Macro tp_npos_elections::generate_solution_type [−][src]
generate_solution_type!() { /* proc-macro */ }
Generates a struct to store the election result in a small way. This can encode a structure
which is the equivalent of a tp_npos_elections::Assignment<_>
.
The following data types can be configured by the macro.
- The identifier of the voter. This can be any type that supports
tetsy-scale-codec
’s compact encoding. - The identifier of the target. This can be any type that supports
tetsy-scale-codec
’s compact encoding. - The accuracy of the ratios. This must be one of the
PerThing
types defined inarithmetic
.
Moreover, the maximum number of edges per voter (distribution per assignment) also need to be specified. Attempting to convert from/to an assignment with more distributions will fail.
For example, the following generates a public struct with name TestSolution
with u16
voter
type, u8
target type and Perbill
accuracy with maximum of 8 edges per voter.
generate_solution_type!(pub struct TestSolution<u16, u8, Perbill>::(8))
The given struct provides function to convert from/to Assignment:
fn from_assignment<..>(..)
fn into_assignment<..>(..)
The generated struct is by default deriving both Encode
and Decode
. This is okay but could
lead to many 0s in the solution. If prefixed with #[compact]
, then a custom compact encoding
for numbers will be used, similar to how tetsy-scale-codec
’s Compact
works.
generate_solution_type!( #[compact] pub struct TestSolutionCompact<u16, u8, Perbill>::(8) )