File tree Expand file tree Collapse file tree 1 file changed +35
-9
lines changed
Expand file tree Collapse file tree 1 file changed +35
-9
lines changed Original file line number Diff line number Diff line change @@ -179,7 +179,7 @@ impl Transformation {
179179
180180 fn presenter ( & self , accumulator : & TokenStream ) -> TokenStream {
181181 let Self {
182- quantity : _ ,
182+ quantity,
183183 output_type,
184184 entries,
185185 } = self ;
@@ -193,15 +193,41 @@ impl Transformation {
193193 #name: #entry
194194 }
195195 } ) ;
196- quote ! {
197- :: benzina:: __private:: std:: iter:: Iterator :: collect:: <:: benzina:: __private:: std:: vec:: Vec <_>>(
198- :: benzina:: __private:: std:: iter:: Iterator :: map(
199- :: benzina:: __private:: IndexMap :: into_values( #accumulator) ,
200- |item| #output_type {
201- #( #entries) , *
202- }
203- )
196+ let iterator = quote ! {
197+ :: benzina:: __private:: std:: iter:: Iterator :: map(
198+ :: benzina:: __private:: IndexMap :: into_values( #accumulator) ,
199+ |item| #output_type {
200+ #( #entries) , *
201+ }
204202 )
203+ } ;
204+ match quantity {
205+ Quantity :: MaybeOne => {
206+ quote ! {
207+ :: benzina:: __private:: std:: iter:: Iterator :: next(
208+ & mut #iterator
209+ )
210+ }
211+ }
212+ Quantity :: One | Quantity :: AssumeOne => {
213+ quote ! {
214+ match :: benzina:: __private:: std:: iter:: Iterator :: next(
215+ & mut #iterator
216+ ) {
217+ Some ( item) => item,
218+ None => return :: benzina:: __private:: std:: result:: Result :: Err (
219+ :: benzina:: __private:: diesel:: result:: Error :: NotFound
220+ )
221+ }
222+ }
223+ }
224+ Quantity :: AtLeastZero | Quantity :: AtLeastOne => {
225+ quote ! {
226+ :: benzina:: __private:: std:: iter:: Iterator :: collect:: <:: benzina:: __private:: std:: vec:: Vec <_>>(
227+ #iterator
228+ )
229+ }
230+ }
205231 }
206232 }
207233}
You can’t perform that action at this time.
0 commit comments