paritytech / parity-scale-codec

Lightweight, efficient, binary serialization and deserialization codec
Apache License 2.0
246 stars 95 forks source link

Support constant expressions as index attribute variant #551

Open ipapandinas opened 8 months ago

ipapandinas commented 8 months ago

This pull request introduces the capability to use constant expressions as index attribute variants for enum encoding, addressing the demand from issue https://github.com/paritytech/polkadot-sdk/issues/2665. This update allows developers to declare pallet indices as constants when constructing a runtime.

The uniqueness of constant expression indices is ensured at compile time with find_const_duplicate. Due to limitations in Rust's procedural macros, a runtime check approach is adopted to ensure that indices adhere to the u8 range. UI tests have been included to cover various scenarios, ensuring that the checks function as expected.