pub(crate) fn find_and_swap_remove<T, F>( vec: &mut Vec<T>, predicate: F, ) -> Option<T>where F: Fn(&T) -> bool,