From 8a8534ede3b030ac18d281f3165e5faeb0d3ce40 Mon Sep 17 00:00:00 2001 From: Henry Schimke Date: Mon, 9 Jan 2023 17:37:39 -0600 Subject: [PATCH] switch to rust array filter from java iterator --- src/aztec/encoder/high_level_encoder.rs | 19 +++------ src/oned/rss/expanded/rss_expanded_reader.rs | 45 +++++++++++++------- 2 files changed, 35 insertions(+), 29 deletions(-) diff --git a/src/aztec/encoder/high_level_encoder.rs b/src/aztec/encoder/high_level_encoder.rs index 75cce52..0c1b562 100644 --- a/src/aztec/encoder/high_level_encoder.rs +++ b/src/aztec/encoder/high_level_encoder.rs @@ -440,20 +440,11 @@ impl HighLevelEncoder { fn simplify_states(states: Vec) -> Vec { let mut result: Vec = Vec::new(); for newState in states { - // for (State newState : states) { - let mut add = true; - for i in 0..result.len() { - // for st in result { - // for (Iterator iterator = result.iterator(); iterator.hasNext();) { - if let Some(oldState) = result.get(i) { - if oldState.isBetterThanOrEqualTo(&newState) { - add = false; - break; - } - if newState.isBetterThanOrEqualTo(oldState) { - result.remove(i); - } - } + let add = result + .iter() + .fold(true, |acc, s| !s.isBetterThanOrEqualTo(&newState) && acc); + if add { + result.retain(|s| !newState.isBetterThanOrEqualTo(s)); } if add { result.push(newState); diff --git a/src/oned/rss/expanded/rss_expanded_reader.rs b/src/oned/rss/expanded/rss_expanded_reader.rs index c731938..4e781b0 100644 --- a/src/oned/rss/expanded/rss_expanded_reader.rs +++ b/src/oned/rss/expanded/rss_expanded_reader.rs @@ -491,28 +491,43 @@ impl RSSExpandedReader { // Remove all the rows that contains only specified pairs fn removePartialRows(pairs: &[ExpandedPair], rows: &mut Vec) { - let row_search = rows.clone(); - for i in 0..row_search.len() { - // for r in rows { - // for (Iterator iterator = rows.iterator(); iterator.hasNext();) { - // ExpandedRow r = iterator.next(); - let r = row_search.get(i).unwrap(); - if r.getPairs().len() != pairs.len() { - let mut allFound = true; - for p in r.getPairs() { + rows.retain(|row| { + let mut allFound = true; + if row.getPairs().len() != pairs.len() { + for p in row.getPairs() { // for (ExpandedPair p : r.getPairs()) { if !pairs.contains(p) { allFound = false; break; } } - if allFound { - // 'pairs' contains all the pairs from the row 'r' - // iterator.remove(); - rows.remove(i); - } + !allFound + } else { + true } - } + }); + // let row_search = rows.clone(); + // for i in 0..row_search.len() { + // // for r in rows { + // // for (Iterator iterator = rows.iterator(); iterator.hasNext();) { + // // ExpandedRow r = iterator.next(); + // let r = row_search.get(i).unwrap(); + // if r.getPairs().len() != pairs.len() { + // let mut allFound = true; + // for p in r.getPairs() { + // // for (ExpandedPair p : r.getPairs()) { + // if !pairs.contains(p) { + // allFound = false; + // break; + // } + // } + // if allFound { + // // 'pairs' contains all the pairs from the row 'r' + // // iterator.remove(); + // rows.remove(i); + // } + // } + // } } // Returns true when one of the rows already contains all the pairs