pub fn find_by_id_or( arr: &[(Id, Val)], id: Id, default: Val, ) -> Val { arr.iter() .find(|(elem_id, _)| *elem_id == id) .map_or(default, |row| row.1) } #[cfg(test)] mod test { use super::find_by_id_or; #[test] fn when_no_elements_then_return_default() { let arr = []; let result = find_by_id_or(&arr, 1, 42); assert_eq!(result, 42); } #[test] fn when_id_not_in_elements_then_return_default() { let arr = [(0, 100), (2, 200)]; let result = find_by_id_or(&arr, 1, 42); assert_eq!(result, 42); } #[test] fn when_id_in_elements_then_return_value() { let arr = [(1, 67)]; let result = find_by_id_or(&arr, 1, 42); assert_eq!(result, 67); } }