@@ -136,28 +136,25 @@ extern "C" fn rs_aiur_toplevel_execute(
136136
137137 // Per-function array of `(group, width, unique_rows, total_hits)` quadruples,
138138 // one per split. Queries within a function are partitioned by return group.
139- let function_stats: Vec < Vec < ( String , usize , usize , usize ) > > = ( 0 ..toplevel
140- . functions
141- . len ( ) )
139+ let function_stats: Vec < Vec < ( std:: sync:: Arc < str > , usize , usize , usize ) > > = ( 0
140+ ..toplevel. functions . len ( ) )
142141 . map ( |i| {
143142 let queries = & query_record. function_queries [ i] ;
144- let mut stats: Vec < ( String , usize , usize , usize ) > = toplevel
143+ let mut stats: Vec < ( std :: sync :: Arc < str > , usize , usize , usize ) > = toplevel
145144 . filtered_functions [ i]
146145 . iter ( )
147146 . map ( |( group, func) | {
148147 let ( rows, hits) = queries
149148 . iter ( )
150- . filter ( |( _, res) | res. return_group == * group)
149+ . filter ( |( _, res) | res. return_group . as_ref ( ) == group. as_ref ( ) )
151150 . fold ( ( 0usize , 0usize ) , |( r, h) , ( _, res) | {
152151 let m = usize:: try_from ( res. multiplicity . as_canonical_u64 ( ) )
153152 . expect ( "multiplicity exceeds usize" ) ;
154153 if m != 0 { ( r + 1 , h + m) } else { ( r, h) }
155154 } ) ;
156155 let l = func. layout ;
157- let width = l. input_size
158- + l. selectors
159- + l. auxiliaries
160- + 4 * ( 1 + l. lookups ) ;
156+ let width =
157+ l. input_size + l. selectors + l. auxiliaries + 4 * ( 1 + l. lookups ) ;
161158 ( group. clone ( ) , width, rows, hits)
162159 } )
163160 . collect ( ) ;
@@ -181,7 +178,7 @@ extern "C" fn rs_aiur_toplevel_execute(
181178 for ( j, ( group, width, rows, hits) ) in per_fn. iter ( ) . enumerate ( ) {
182179 // (String × Nat × Nat × Nat) — right-nested pair encoding
183180 let quad = LeanProd :: new (
184- LeanString :: new ( group) ,
181+ LeanString :: new ( group. as_ref ( ) ) ,
185182 LeanProd :: new (
186183 LeanOwned :: box_usize ( * width) ,
187184 LeanProd :: new (
0 commit comments