Макрос за HashMap, както има за Vec?

Знаем, че има удобен начин да създаваме вектори, със vec![1, 2, 3] макроса. За нещастие, за HashMap няма такова нещо. Може да направим това:

let dictionary = {
    let d = HashMap::new();
    d.insert("Gekommen", "Дойдох");
    d.insert("Gesehen", "Видях");
    d.insert("Gerusten", "Писах Rust");
    d
}

Но няма готин макрос или магически синтаксис за това. С малко търсене из Stack Overflow, обаче...

macro_rules! map(
    { $($key:expr => $value:expr),+ } => {
        {
            let mut m = ::std::collections::HashMap::new();
            $(
                m.insert($key, $value);
            )+
            m
        }
     };
);

Това ни позволява да напишем горния пример ей така:

let dictionary = map!{ "Gekommen" => "Дойдох", "Gesehen" => "Видях", "Gerusten" => "Писах Rust" };

И за да не копираме тоя макрос наляво-надясно, в собствените си проекти може просто да използваме пакета maplit. Цъкнете на "Documentation", ако искате да прочетете как се използва, цъкнете на "Repository", ако сте любопитни как е имплементиран.