mustafasrepo commented on code in PR #6501: URL: https://github.com/apache/arrow-datafusion/pull/6501#discussion_r1214945396
########## datafusion/physical-expr/src/equivalence.rs: ########## @@ -115,6 +113,53 @@ impl<T: Eq + Hash + Clone> EquivalenceProperties<T> { } } +/// Remove duplicates inside the `in_data` vector, returned vector would consist of unique entries +fn deduplicate_vector<T: PartialEq>(in_data: Vec<T>) -> Vec<T> { + let mut result = vec![]; + for elem in in_data { + if !result.contains(&elem) { + result.push(elem); + } + } + result +} + +/// Find the position of `entry` inside `in_data`, if `entry` is not found return `None`. +fn get_entry_position<T: PartialEq>(in_data: &[T], entry: &T) -> Option<usize> { + in_data.iter().position(|item| item.eq(entry)) +} + +/// Remove `entry` for the `in_data`, returns `true` if removal is successful (e.g `entry` is indeed in the `in_data`) +/// Otherwise return `false` +fn remove_from_vec<T: PartialEq>(in_data: &mut Vec<T>, entry: &T) -> bool { Review Comment: Since, we remove by giving element inside the vector. We already have removed element. If we return `Option<T>` the value inside `Option` will be `entry` argument to the function. Hence this function is more akin to `HashSet` `remove`. Also inside `remove` function we are interested in whether removal was successful, in this case we need to introduce `is_some` checks inside `remove` function. Hence I think, current API is more clear, However, if it is misleading, or counter intuitive I can implement as your suggestion. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org