pub fn group_by<T, K, F>(items: Vec<T>, key_fn: F) -> HashMap<K, Vec<T>>where K: Hash + Eq, F: Fn(&T) -> K,