switch to rust array filter from java iterator

This commit is contained in:
Henry Schimke
2023-01-09 17:37:39 -06:00
parent c04bf06d15
commit 8a8534ede3
2 changed files with 35 additions and 29 deletions

View File

@@ -440,20 +440,11 @@ impl HighLevelEncoder {
fn simplify_states(states: Vec<State>) -> Vec<State> { fn simplify_states(states: Vec<State>) -> Vec<State> {
let mut result: Vec<State> = Vec::new(); let mut result: Vec<State> = Vec::new();
for newState in states { for newState in states {
// for (State newState : states) { let add = result
let mut add = true; .iter()
for i in 0..result.len() { .fold(true, |acc, s| !s.isBetterThanOrEqualTo(&newState) && acc);
// for st in result { if add {
// for (Iterator<State> iterator = result.iterator(); iterator.hasNext();) { result.retain(|s| !newState.isBetterThanOrEqualTo(s));
if let Some(oldState) = result.get(i) {
if oldState.isBetterThanOrEqualTo(&newState) {
add = false;
break;
}
if newState.isBetterThanOrEqualTo(oldState) {
result.remove(i);
}
}
} }
if add { if add {
result.push(newState); result.push(newState);

View File

@@ -491,28 +491,43 @@ impl RSSExpandedReader {
// Remove all the rows that contains only specified pairs // Remove all the rows that contains only specified pairs
fn removePartialRows(pairs: &[ExpandedPair], rows: &mut Vec<ExpandedRow>) { fn removePartialRows(pairs: &[ExpandedPair], rows: &mut Vec<ExpandedRow>) {
let row_search = rows.clone(); rows.retain(|row| {
for i in 0..row_search.len() { let mut allFound = true;
// for r in rows { if row.getPairs().len() != pairs.len() {
// for (Iterator<ExpandedRow> iterator = rows.iterator(); iterator.hasNext();) { for p in row.getPairs() {
// 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()) { // for (ExpandedPair p : r.getPairs()) {
if !pairs.contains(p) { if !pairs.contains(p) {
allFound = false; allFound = false;
break; break;
} }
} }
if allFound { !allFound
// 'pairs' contains all the pairs from the row 'r' } else {
// iterator.remove(); true
rows.remove(i);
}
} }
} });
// let row_search = rows.clone();
// for i in 0..row_search.len() {
// // for r in rows {
// // for (Iterator<ExpandedRow> 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 // Returns true when one of the rows already contains all the pairs