Should HashMap be added to std prelude?

Both of the standard map types implement FromIterator<(K, V)> (HashMap, BTreeMap). So for dictionary literals up to 32 items long, you can use [($key, $value),*].into_iter().collect(). For the insertion, Extend<(K, V)> (map.extend(iter::once(($key, $value)))), which is basically collect_to.

So yes, the macro would be practical, so long as you always provide the concrete type somehow. I'm pretty sure someone's written a collect! macro that does this.

Collection traits have been discussed many times (link is arbitrary first urlo result), but are blocked on at least GAT. What said traits would actually guarantee and how they'd be organized, however, is contentious. E.g. what performance suggestions do you put on what traits? But that's not this thread's discussion.