1717
1818use super :: Origin ;
1919use crate :: { Balance , BlockNumber , RuntimeOrigin , DAYS , DOLLARS , HOURS } ;
20- use sp_runtime:: Perbill ;
20+ use sp_runtime:: { str_array as s, Perbill } ;
21+ use sp_std:: borrow:: Cow ;
2122
2223/// Referendum `TrackId` type.
2324pub type TrackId = u16 ;
@@ -46,13 +47,15 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
4647
4748 type RuntimeOrigin = <RuntimeOrigin as frame_support:: traits:: OriginTrait >:: PalletsOrigin ;
4849
49- /// Return the array of available tracks and their information.
50- fn tracks ( ) -> & ' static [ ( Self :: Id , pallet_referenda:: TrackInfo < Balance , BlockNumber > ) ] {
51- static DATA : [ ( TrackId , pallet_referenda:: TrackInfo < Balance , BlockNumber > ) ; 9 ] = [
52- (
53- constants:: AMBASSADOR_TIER_1 ,
54- pallet_referenda:: TrackInfo {
55- name : "ambassador tier 1" ,
50+ /// Return the list of available tracks and their information.
51+ fn tracks (
52+ ) -> impl Iterator < Item = Cow < ' static , pallet_referenda:: Track < Self :: Id , Balance , BlockNumber > > >
53+ {
54+ static DATA : [ pallet_referenda:: Track < TrackId , Balance , BlockNumber > ; 9 ] = [
55+ pallet_referenda:: Track {
56+ id : constants:: AMBASSADOR_TIER_1 ,
57+ info : pallet_referenda:: TrackInfo {
58+ name : s ( "ambassador tier 1" ) ,
5659 max_deciding : 10 ,
5760 decision_deposit : 5 * DOLLARS ,
5861 prepare_period : 24 * HOURS ,
@@ -70,11 +73,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
7073 ceil : Perbill :: from_percent ( 50 ) ,
7174 } ,
7275 } ,
73- ) ,
74- (
75- constants:: AMBASSADOR_TIER_2 ,
76- pallet_referenda:: TrackInfo {
77- name : "ambassador tier 2" ,
76+ } ,
77+ pallet_referenda :: Track {
78+ id : constants:: AMBASSADOR_TIER_2 ,
79+ info : pallet_referenda:: TrackInfo {
80+ name : s ( "ambassador tier 2" ) ,
7881 max_deciding : 10 ,
7982 decision_deposit : 5 * DOLLARS ,
8083 prepare_period : 24 * HOURS ,
@@ -92,11 +95,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
9295 ceil : Perbill :: from_percent ( 50 ) ,
9396 } ,
9497 } ,
95- ) ,
96- (
97- constants:: SENIOR_AMBASSADOR_TIER_3 ,
98- pallet_referenda:: TrackInfo {
99- name : "senior ambassador tier 3" ,
98+ } ,
99+ pallet_referenda :: Track {
100+ id : constants:: SENIOR_AMBASSADOR_TIER_3 ,
101+ info : pallet_referenda:: TrackInfo {
102+ name : s ( "senior ambassador tier 3" ) ,
100103 max_deciding : 10 ,
101104 decision_deposit : 5 * DOLLARS ,
102105 prepare_period : 24 * HOURS ,
@@ -114,11 +117,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
114117 ceil : Perbill :: from_percent ( 50 ) ,
115118 } ,
116119 } ,
117- ) ,
118- (
119- constants:: SENIOR_AMBASSADOR_TIER_4 ,
120- pallet_referenda:: TrackInfo {
121- name : "senior ambassador tier 4" ,
120+ } ,
121+ pallet_referenda :: Track {
122+ id : constants:: SENIOR_AMBASSADOR_TIER_4 ,
123+ info : pallet_referenda:: TrackInfo {
124+ name : s ( "senior ambassador tier 4" ) ,
122125 max_deciding : 10 ,
123126 decision_deposit : 5 * DOLLARS ,
124127 prepare_period : 24 * HOURS ,
@@ -136,11 +139,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
136139 ceil : Perbill :: from_percent ( 50 ) ,
137140 } ,
138141 } ,
139- ) ,
140- (
141- constants:: HEAD_AMBASSADOR_TIER_5 ,
142- pallet_referenda:: TrackInfo {
143- name : "head ambassador tier 5" ,
142+ } ,
143+ pallet_referenda :: Track {
144+ id : constants:: HEAD_AMBASSADOR_TIER_5 ,
145+ info : pallet_referenda:: TrackInfo {
146+ name : s ( "head ambassador tier 5" ) ,
144147 max_deciding : 10 ,
145148 decision_deposit : 5 * DOLLARS ,
146149 prepare_period : 24 * HOURS ,
@@ -158,11 +161,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
158161 ceil : Perbill :: from_percent ( 50 ) ,
159162 } ,
160163 } ,
161- ) ,
162- (
163- constants:: HEAD_AMBASSADOR_TIER_6 ,
164- pallet_referenda:: TrackInfo {
165- name : "head ambassador tier 6" ,
164+ } ,
165+ pallet_referenda :: Track {
166+ id : constants:: HEAD_AMBASSADOR_TIER_6 ,
167+ info : pallet_referenda:: TrackInfo {
168+ name : s ( "head ambassador tier 6" ) ,
166169 max_deciding : 10 ,
167170 decision_deposit : 5 * DOLLARS ,
168171 prepare_period : 24 * HOURS ,
@@ -180,11 +183,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
180183 ceil : Perbill :: from_percent ( 50 ) ,
181184 } ,
182185 } ,
183- ) ,
184- (
185- constants:: HEAD_AMBASSADOR_TIER_7 ,
186- pallet_referenda:: TrackInfo {
187- name : "head ambassador tier 7" ,
186+ } ,
187+ pallet_referenda :: Track {
188+ id : constants:: HEAD_AMBASSADOR_TIER_7 ,
189+ info : pallet_referenda:: TrackInfo {
190+ name : s ( "head ambassador tier 7" ) ,
188191 max_deciding : 10 ,
189192 decision_deposit : 5 * DOLLARS ,
190193 prepare_period : 24 * HOURS ,
@@ -202,11 +205,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
202205 ceil : Perbill :: from_percent ( 50 ) ,
203206 } ,
204207 } ,
205- ) ,
206- (
207- constants:: MASTER_AMBASSADOR_TIER_8 ,
208- pallet_referenda:: TrackInfo {
209- name : "master ambassador tier 8" ,
208+ } ,
209+ pallet_referenda :: Track {
210+ id : constants:: MASTER_AMBASSADOR_TIER_8 ,
211+ info : pallet_referenda:: TrackInfo {
212+ name : s ( "master ambassador tier 8" ) ,
210213 max_deciding : 10 ,
211214 decision_deposit : 5 * DOLLARS ,
212215 prepare_period : 24 * HOURS ,
@@ -224,11 +227,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
224227 ceil : Perbill :: from_percent ( 50 ) ,
225228 } ,
226229 } ,
227- ) ,
228- (
229- constants:: MASTER_AMBASSADOR_TIER_9 ,
230- pallet_referenda:: TrackInfo {
231- name : "master ambassador tier 9" ,
230+ } ,
231+ pallet_referenda :: Track {
232+ id : constants:: MASTER_AMBASSADOR_TIER_9 ,
233+ info : pallet_referenda:: TrackInfo {
234+ name : s ( "master ambassador tier 9" ) ,
232235 max_deciding : 10 ,
233236 decision_deposit : 5 * DOLLARS ,
234237 prepare_period : 24 * HOURS ,
@@ -246,9 +249,9 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
246249 ceil : Perbill :: from_percent ( 50 ) ,
247250 } ,
248251 } ,
249- ) ,
252+ } ,
250253 ] ;
251- & DATA [ .. ]
254+ DATA . iter ( ) . map ( Cow :: Borrowed )
252255 }
253256
254257 /// Determine the voting track for the given `origin`.
@@ -277,6 +280,3 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
277280 }
278281 }
279282}
280-
281- // implements [`frame_support::traits::Get`] for [`TracksInfo`]
282- pallet_referenda:: impl_tracksinfo_get!( TracksInfo , Balance , BlockNumber ) ;
0 commit comments