@@ -212,12 +212,12 @@ fn pad_bitarray(bits: &[u8], quiet_zone: usize) -> BitArray {
212212 * @param maxIndividualVariance The most any counter can differ before we give up
213213 * @return ratio of total variance between counters and pattern compared to total pattern size
214214 */
215- pub fn pattern_match_variance (
216- counters : & [ u32 ] ,
215+ pub fn pattern_match_variance < const N : usize > (
216+ counters : & [ u32 ; N ] ,
217217 pattern : & [ u32 ] ,
218218 mut max_individual_variance : f32 ,
219219) -> f32 {
220- let num_counters = counters . len ( ) ;
220+ let num_counters = N ;
221221
222222 let total: f32 = counters. iter ( ) . sum :: < u32 > ( ) as f32 ;
223223 let pattern_length: u32 = pattern. iter ( ) . take ( num_counters) . sum ( ) ;
@@ -266,8 +266,12 @@ pub fn pattern_match_variance(
266266 * @throws NotFoundException if counters cannot be filled entirely from row before running out
267267 * of pixels
268268 */
269- pub fn record_pattern ( row : & BitArray , start : usize , counters : & mut [ u32 ] ) -> Result < ( ) > {
270- let num_counters = counters. len ( ) ;
269+ pub fn record_pattern < const N : usize > (
270+ row : & BitArray ,
271+ start : usize ,
272+ counters : & mut [ u32 ; N ] ,
273+ ) -> Result < ( ) > {
274+ let num_counters = N ;
271275 counters. fill ( 0 ) ;
272276
273277 let end = row. get_size ( ) ;
@@ -300,10 +304,14 @@ pub fn record_pattern(row: &BitArray, start: usize, counters: &mut [u32]) -> Res
300304 Ok ( ( ) )
301305}
302306
303- pub fn record_pattern_in_reverse ( row : & BitArray , start : usize , counters : & mut [ u32 ] ) -> Result < ( ) > {
307+ pub fn record_pattern_in_reverse < const N : usize > (
308+ row : & BitArray ,
309+ start : usize ,
310+ counters : & mut [ u32 ; N ] ,
311+ ) -> Result < ( ) > {
304312 let mut start = start;
305313 // This could be more efficient I guess
306- let mut num_transitions_left = counters . len ( ) as isize ;
314+ let mut num_transitions_left = N as isize ;
307315 let mut last = row. get ( start) ;
308316 while start > 0 && num_transitions_left >= 0 {
309317 start -= 1 ;
0 commit comments