Sha256: f7b02c964f63505d3e36280cfdc1755e05287714201efe983dacf702eee61434

Contents?: true

Size: 771 Bytes

Versions: 25

Compression:

Stored size: 771 Bytes

Contents

#![cfg(feature = "use_std")]

use std::collections::HashMap;
use std::hash::Hash;
use std::iter::Iterator;

/// Return a `HashMap` of keys mapped to a list of their corresponding values.
///
/// See [`.into_group_map()`](crate::Itertools::into_group_map)
/// for more information.
pub fn into_group_map<I, K, V>(iter: I) -> HashMap<K, Vec<V>>
    where I: Iterator<Item=(K, V)>,
          K: Hash + Eq,
{
    let mut lookup = HashMap::new();

    iter.for_each(|(key, val)| {
        lookup.entry(key).or_insert_with(Vec::new).push(val);
    });

    lookup
}

pub fn into_group_map_by<I, K, V>(iter: I, f: impl Fn(&V) -> K) -> HashMap<K, Vec<V>>
    where
        I: Iterator<Item=V>,
        K: Hash + Eq,
{
    into_group_map(
        iter.map(|v| (f(&v), v))
    )
}

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
wasmtime-18.0.3 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-17.0.1 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-17.0.0 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-16.0.0 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-15.0.1 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-15.0.0 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-14.0.4 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-14.0.3 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-14.0.1 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-14.0.0 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-13.0.0 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-12.0.1 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-12.0.0 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-11.0.0 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-10.0.1 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-10.0.0 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-9.0.4 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-9.0.1 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-8.0.0 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs
wasmtime-7.0.0 ./ext/cargo-vendor/itertools-0.10.5/src/group_map.rs