@@ -44,8 +44,8 @@ fn main() {
4444 let graph = graph. arrange :: < ValBatcher < _ , _ , _ , _ > , ValBuilder < _ , _ , _ , _ > , ValSpine < _ , _ , _ , _ > > ( ) ;
4545
4646 match program. as_str ( ) {
47- "tc" => tc ( & graph) . filter ( move |_| inspect) . map ( |_| ( ) ) . consolidate ( ) . inspect ( |x| println ! ( "tc count: {:?}" , x) ) . probe ( ) ,
48- "sg" => sg ( & graph) . filter ( move |_| inspect) . map ( |_| ( ) ) . consolidate ( ) . inspect ( |x| println ! ( "sg count: {:?}" , x) ) . probe ( ) ,
47+ "tc" => tc ( graph. clone ( ) ) . filter ( move |_| inspect) . map ( |_| ( ) ) . consolidate ( ) . inspect ( |x| println ! ( "tc count: {:?}" , x) ) . probe ( ) ,
48+ "sg" => sg ( graph) . filter ( move |_| inspect) . map ( |_| ( ) ) . consolidate ( ) . inspect ( |x| println ! ( "sg count: {:?}" , x) ) . probe ( ) ,
4949 _ => panic ! ( "must specify one of 'tc', 'sg'." )
5050 } ;
5151
@@ -83,54 +83,54 @@ fn main() {
8383use timely:: order:: Product ;
8484
8585// returns pairs (n, s) indicating node n can be reached from a root in s steps.
86- fn tc < G : Scope < Timestamp =( ) > > ( edges : & EdgeArranged < G , Node , Node , Present > ) -> VecCollection < G , Edge , Present > {
86+ fn tc < G : Scope < Timestamp =( ) > > ( edges : EdgeArranged < G , Node , Node , Present > ) -> VecCollection < G , Edge , Present > {
8787
8888 // repeatedly update minimal distances each node can be reached from each root
8989 edges. stream . scope ( ) . iterative :: < Iter , _ , _ > ( |scope| {
9090
91- let inner = Variable :: new ( scope, Product :: new ( Default :: default ( ) , 1 ) ) ;
92- let edges = edges. enter ( & inner . scope ( ) ) ;
91+ let ( inner, inner_collection ) = Variable :: new ( scope, Product :: new ( Default :: default ( ) , 1 ) ) ;
92+ let edges = edges. enter ( scope) ;
9393
9494 let result =
95- inner
95+ inner_collection
9696 . map ( |( x, y) | ( y, x) )
9797 . arrange :: < ValBatcher < _ , _ , _ , _ > , ValBuilder < _ , _ , _ , _ > , ValSpine < _ , _ , _ , _ > > ( )
98- . join_core ( edges, |_y, & x, & z| Some ( ( x, z) ) )
98+ . join_core ( edges. clone ( ) , |_y, & x, & z| Some ( ( x, z) ) )
9999 . concat ( edges. as_collection ( |& k, & v| ( k, v) ) )
100100 . arrange :: < KeyBatcher < _ , _ , _ > , KeyBuilder < _ , _ , _ > , KeySpine < _ , _ , _ > > ( )
101- . threshold_semigroup ( |_, _, x| if x. is_none ( ) { Some ( Present ) } else { None } )
101+ . threshold_semigroup ( |_, _, x : Option < & Present > | if x. is_none ( ) { Some ( Present ) } else { None } )
102102 ;
103103
104- inner. set ( result) ;
104+ inner. set ( result. clone ( ) ) ;
105105 result. leave ( )
106106 }
107107 )
108108}
109109
110110// returns pairs (n, s) indicating node n can be reached from a root in s steps.
111- fn sg < G : Scope < Timestamp =( ) > > ( edges : & EdgeArranged < G , Node , Node , Present > ) -> VecCollection < G , Edge , Present > {
111+ fn sg < G : Scope < Timestamp =( ) > > ( edges : EdgeArranged < G , Node , Node , Present > ) -> VecCollection < G , Edge , Present > {
112112
113- let peers = edges. join_core ( edges, |_, & x, & y| Some ( ( x, y) ) ) . filter ( |& ( x, y) | x != y) ;
113+ let peers = edges. clone ( ) . join_core ( edges. clone ( ) , |_, & x, & y| Some ( ( x, y) ) ) . filter ( |& ( x, y) | x != y) ;
114114
115115 // repeatedly update minimal distances each node can be reached from each root
116116 peers. scope ( ) . iterative :: < Iter , _ , _ > ( |scope| {
117117
118- let inner = Variable :: new ( scope, Product :: new ( Default :: default ( ) , 1 ) ) ;
119- let edges = edges. enter ( & inner . scope ( ) ) ;
120- let peers = peers. enter ( & inner . scope ( ) ) ;
118+ let ( inner, inner_collection ) = Variable :: new ( scope, Product :: new ( Default :: default ( ) , 1 ) ) ;
119+ let edges = edges. enter ( scope) ;
120+ let peers = peers. enter ( scope) ;
121121
122122 let result =
123- inner
123+ inner_collection
124124 . arrange :: < ValBatcher < _ , _ , _ , _ > , ValBuilder < _ , _ , _ , _ > , ValSpine < _ , _ , _ , _ > > ( )
125- . join_core ( edges, |_, & x, & z| Some ( ( x, z) ) )
125+ . join_core ( edges. clone ( ) , |_, & x, & z| Some ( ( x, z) ) )
126126 . arrange :: < ValBatcher < _ , _ , _ , _ > , ValBuilder < _ , _ , _ , _ > , ValSpine < _ , _ , _ , _ > > ( )
127127 . join_core ( edges, |_, & x, & z| Some ( ( x, z) ) )
128128 . concat ( peers)
129129 . arrange :: < KeyBatcher < _ , _ , _ > , KeyBuilder < _ , _ , _ > , KeySpine < _ , _ , _ > > ( )
130- . threshold_semigroup ( |_, _, x| if x. is_none ( ) { Some ( Present ) } else { None } )
130+ . threshold_semigroup ( |_, _, x : Option < & Present > | if x. is_none ( ) { Some ( Present ) } else { None } )
131131 ;
132132
133- inner. set ( result) ;
133+ inner. set ( result. clone ( ) ) ;
134134 result. leave ( )
135135 }
136136 )
0 commit comments