@@ -229,9 +229,9 @@ fn bind_run<'a, D: DataT, T: Clone + 'a>(
229229 run : IdRunFn < ' a , D , T > ,
230230) -> ValXs < ' a , T , D :: V < ' a > > {
231231 match pat {
232- Pattern :: Var => run ( * r, ( cv. 0 . cons_var ( y) , cv. 1 ) ) ,
232+ Pattern :: Var => run ( r, ( cv. 0 . cons_var ( y) , cv. 1 ) ) ,
233233 Pattern :: Idx ( pats) => {
234- let r = move |ctx, vp| run ( * r, ( ctx, vp) ) ;
234+ let r = move |ctx, vp| run ( r, ( ctx, vp) ) ;
235235 flat_map_then_with ( bind_pats ( pats, cv. 0 . clone ( ) , ( cv. 0 , y) ) , cv. 1 , r)
236236 }
237237 }
@@ -249,7 +249,7 @@ fn label_run<'a, D: DataT, T: 'a>(
249249 } ) )
250250}
251251
252- fn try_catch_run < ' a , T : ' a , V : ' a , I : Iterator < Item = ValX < T , V > > + ' a > (
252+ fn try_catch_run < ' a , T : ' a , V : ' a , I : Iterator < Item = ValX < ' a , T , V > > + ' a > (
253253 mut ys : ValXs < ' a , T , V > ,
254254 f : impl Fn ( Error < V > ) -> I + ' a ,
255255) -> ValXs < ' a , T , V > {
@@ -267,23 +267,23 @@ fn try_catch_run<'a, T: 'a, V: 'a, I: Iterator<Item = ValX<T, V>> + 'a>(
267267}
268268
269269fn fold_run < ' a , D : DataT , T : Clone + ' a > (
270- xs : impl Iterator < Item = ValX < Ctx < ' a , D > , D :: V < ' a > > > + Clone + ' a ,
270+ xs : impl Iterator < Item = ValX < ' a , Ctx < ' a , D > , D :: V < ' a > > > + Clone + ' a ,
271271 cv : Cv < ' a , D , T > ,
272272 init : & ' a Id ,
273273 update : & ' a Id ,
274274 fold_type : & ' a Fold < Id > ,
275275 run : IdRunFn < ' a , D , T > ,
276276) -> ValXs < ' a , T , D :: V < ' a > > {
277- let init = run ( * init, cv. clone ( ) ) ;
278- let update = move |ctx, v| run ( * update, ( ctx, v) ) ;
277+ let init = run ( init, cv. clone ( ) ) ;
278+ let update = move |ctx, v| run ( update, ( ctx, v) ) ;
279279 let inner = |_, y : & T | Some ( y. clone ( ) ) ;
280280 let inner_proj = |ctx, y : & T | Some ( ( ctx, y. clone ( ) ) ) ;
281281 flat_map_then_with ( init, xs, move |i, xs| match fold_type {
282282 Fold :: Reduce => Box :: new ( fold ( xs, i, update, |_| ( ) , |_, _| None , Some ) ) ,
283283 Fold :: Foreach ( None ) => Box :: new ( fold ( xs, i, update, |_| ( ) , inner, |_| None ) ) ,
284284 Fold :: Foreach ( Some ( proj) ) => flat_map_then (
285285 fold ( xs, i, update, |ctx| ctx. clone ( ) , inner_proj, |_| None ) ,
286- move |( ctx, y) | run ( * proj, ( ctx, y) ) ,
286+ move |( ctx, y) | run ( proj, ( ctx, y) ) ,
287287 ) ,
288288 } )
289289}
@@ -302,7 +302,7 @@ where
302302type Pairs < ' a , T > = box_iter:: BoxIter < ' a , ( T , T ) > ;
303303
304304/// Run `self` and `r` and return the cartesian product of their outputs.
305- fn cartesian < ' a , D : DataT > ( l : & ' a Id , r : & ' a Id , cv : Cv < ' a , D > ) -> Pairs < ' a , ValX < D :: V < ' a > > > {
305+ fn cartesian < ' a , D : DataT > ( l : & ' a Id , r : & ' a Id , cv : Cv < ' a , D > ) -> Pairs < ' a , ValX < ' a , D :: V < ' a > > > {
306306 flat_map_with ( l. run ( cv. clone ( ) ) , cv, move |l, cv| {
307307 map_with ( r. run ( cv) , l, |r, l| ( l, r) )
308308 } )
@@ -312,7 +312,7 @@ fn fold_update<'a, D: DataT>(
312312 fold_type : & ' a Fold < Id > ,
313313 path : & ' a Id ,
314314 v : D :: V < ' a > ,
315- mut xs : impl Iterator < Item = ValX < Ctx < ' a , D > , D :: V < ' a > > > + Clone + ' a ,
315+ mut xs : impl Iterator < Item = ValX < ' a , Ctx < ' a , D > , D :: V < ' a > > > + Clone + ' a ,
316316 f : BoxUpdate < ' a , D :: V < ' a > > ,
317317) -> ValXs < ' a , D :: V < ' a > > {
318318 let ctx = match xs. next ( ) {
@@ -351,10 +351,10 @@ fn def_run<'a, D: DataT, T: 'a>(
351351 from : fn ( exn:: CallInput < D :: V < ' a > > ) -> T ,
352352) -> ValXs < ' a , T , D :: V < ' a > > {
353353 use core:: ops:: ControlFlow ;
354- let outs = |cvs| flat_map_then ( cvs, move |cv| run ( * id, cv) ) ;
354+ let outs = |cvs| flat_map_then ( cvs, move |cv| run ( id, cv) ) ;
355355 let catch = |all : bool | {
356356 move |r| match r {
357- Err ( Exn ( exn:: Inner :: TailCall ( tc) ) ) if all || tc. 0 == * id => {
357+ Err ( Exn ( exn:: Inner :: TailCall ( tc) ) ) if all || tc. 0 == id => {
358358 ControlFlow :: Continue ( run ( tc. 0 , ( with_vars ( tc. 1 ) , from ( tc. 2 ) ) ) )
359359 }
360360 Ok ( _) | Err ( _) => ControlFlow :: Break ( r) ,
@@ -367,7 +367,7 @@ fn def_run<'a, D: DataT, T: 'a>(
367367 CallType :: CatchAll => Box :: new ( crate :: Stack :: new ( [ outs ( cvs) ] . into ( ) , catch ( true ) ) ) ,
368368 CallType :: Throw => Box :: new ( cvs. map ( move |cv| {
369369 cv. and_then ( |cv| {
370- let tc = ( * id, cv. 0 . vars , into ( cv. 1 ) ) ;
370+ let tc = ( id, cv. 0 . vars , into ( cv. 1 ) ) ;
371371 Err ( Exn ( exn:: Inner :: TailCall ( Box :: new ( tc) ) ) )
372372 } )
373373 } ) ) ,
@@ -423,7 +423,7 @@ pub struct Native<D: DataT + ?Sized> {
423423 update : UpdatePtr < D > ,
424424}
425425
426- type IdRunFn < ' a , D , T > = fn ( Id , Cv < ' a , D , T > ) -> ValXs < ' a , T , <D as DataT >:: V < ' a > > ;
426+ type IdRunFn < ' a , D , T > = fn ( & Id , Cv < ' a , D , T > ) -> ValXs < ' a , T , <D as DataT >:: V < ' a > > ;
427427
428428/// Run function pointer (see [`Id::run`]).
429429pub type RunPtr < D > = for <' a > fn ( Cv < ' a , D > ) -> ValXs < ' a , <D as DataT >:: V < ' a > > ;
@@ -461,7 +461,7 @@ impl<D: DataT> Native<D> {
461461
462462impl Id {
463463 /// `f.run((c, v))` returns the output of `v | f` in the context `c`.
464- pub fn run < ' a , D : DataT > ( self , cv : Cv < ' a , D > ) -> ValXs < ' a , D :: V < ' a > > {
464+ pub fn run < ' a , D : DataT > ( & self , cv : Cv < ' a , D > ) -> ValXs < ' a , D :: V < ' a > > {
465465 use core:: iter:: once;
466466 match & cv. 0 . lut ( ) . terms [ self . 0 ] {
467467 Ast :: Id => box_once ( Ok ( cv. 1 ) ) ,
@@ -575,7 +575,7 @@ impl Id {
575575 ///
576576 /// In particular, `v | path(f)` in context `c` yields the same paths as
577577 /// `f.paths((c, (v, Default::default())))`.
578- pub fn paths < ' a , D : DataT > ( self , cv : Cvp < ' a , D > ) -> ValPathXs < ' a , D :: V < ' a > > {
578+ pub fn paths < ' a , D : DataT > ( & self , cv : Cvp < ' a , D > ) -> ValPathXs < ' a , D :: V < ' a > > {
579579 let err = |v| box_once ( Err ( Exn :: from ( Error :: path_expr ( v) ) ) ) ;
580580 let proj_cv = |cv : & Cvp < ' a , D > | ( cv. 0 . clone ( ) , cv. 1 . 0 . clone ( ) ) ;
581581 let proj_val = |( val, _path) : & ( D :: V < ' a > , _ ) | val. clone ( ) ;
@@ -658,7 +658,7 @@ impl Id {
658658
659659 /// `p.update((c, v), f)` returns the output of `v | p |= f` in the context `c`.
660660 pub fn update < ' a , D : DataT > (
661- self ,
661+ & self ,
662662 cv : Cv < ' a , D > ,
663663 f : BoxUpdate < ' a , D :: V < ' a > > ,
664664 ) -> ValXs < ' a , D :: V < ' a > > {
0 commit comments