@@ -90,13 +90,18 @@ pub mod pallet_origins {
9090
9191 /// Implementation of the [EnsureOrigin] trait for the [Origin::HeadAmbassadors] origin.
9292 pub struct EnsureHeadAmbassadorsVoice ;
93- impl < O : Into < Result < Origin , O > > + From < Origin > > EnsureOrigin < O > for EnsureHeadAmbassadorsVoice {
93+ impl < O : OriginTrait + From < Origin > > EnsureOrigin < O > for EnsureHeadAmbassadorsVoice
94+ where
95+ for < ' a > & ' a O :: PalletsOrigin : TryInto < & ' a Origin > ,
96+ {
9497 type Success = ( ) ;
9598 fn try_origin ( o : O ) -> Result < Self :: Success , O > {
96- o. into ( ) . and_then ( |o| match o {
97- Origin :: HeadAmbassadors => Ok ( ( ) ) ,
98- r => Err ( O :: from ( r) ) ,
99- } )
99+ match o. caller ( ) . try_into ( ) {
100+ Ok ( Origin :: HeadAmbassadors ) => return Ok ( ( ) ) ,
101+ _ => ( ) ,
102+ }
103+
104+ Err ( o)
100105 }
101106
102107 #[ cfg( feature = "runtime-benchmarks" ) ]
@@ -108,15 +113,18 @@ pub mod pallet_origins {
108113 /// Implementation of the [EnsureOrigin] trait for the plurality voice [Origin]s
109114 /// from a given rank `R` with the success result of the corresponding [Rank].
110115 pub struct EnsureAmbassadorsVoiceFrom < R > ( PhantomData < R > ) ;
111- impl < R : Get < Rank > , O : Into < Result < Origin , O > > + From < Origin > > EnsureOrigin < O >
112- for EnsureAmbassadorsVoiceFrom < R >
116+ impl < R : Get < Rank > , O : OriginTrait + From < Origin > > EnsureOrigin < O > for EnsureAmbassadorsVoiceFrom < R >
117+ where
118+ for < ' a > & ' a O :: PalletsOrigin : TryInto < & ' a Origin > ,
113119 {
114120 type Success = Rank ;
115121 fn try_origin ( o : O ) -> Result < Self :: Success , O > {
116- o. into ( ) . and_then ( |o| match Origin :: as_voice ( & o) {
117- Some ( r) if r >= R :: get ( ) => Ok ( r) ,
118- _ => Err ( O :: from ( o) ) ,
119- } )
122+ match o. caller ( ) . try_into ( ) . map ( |o| Origin :: as_voice ( o) ) {
123+ Ok ( Some ( r) ) if r >= R :: get ( ) => return Ok ( r) ,
124+ _ => ( ) ,
125+ }
126+
127+ Err ( o)
120128 }
121129
122130 #[ cfg( feature = "runtime-benchmarks" ) ]
@@ -131,10 +139,18 @@ pub mod pallet_origins {
131139 /// Implementation of the [EnsureOrigin] trait for the plurality voice [Origin]s with the
132140 /// success result of the corresponding [Rank].
133141 pub struct EnsureAmbassadorsVoice ;
134- impl < O : Into < Result < Origin , O > > + From < Origin > > EnsureOrigin < O > for EnsureAmbassadorsVoice {
142+ impl < O : OriginTrait + From < Origin > > EnsureOrigin < O > for EnsureAmbassadorsVoice
143+ where
144+ for < ' a > & ' a O :: PalletsOrigin : TryInto < & ' a Origin > ,
145+ {
135146 type Success = Rank ;
136147 fn try_origin ( o : O ) -> Result < Self :: Success , O > {
137- o. into ( ) . and_then ( |o| Origin :: as_voice ( & o) . ok_or ( O :: from ( o) ) )
148+ match o. caller ( ) . try_into ( ) . map ( |o| Origin :: as_voice ( o) ) {
149+ Ok ( Some ( r) ) => return Ok ( r) ,
150+ _ => ( ) ,
151+ }
152+
153+ Err ( o)
138154 }
139155
140156 #[ cfg( feature = "runtime-benchmarks" ) ]
0 commit comments