Finding the maximum length of a key

Given a HashMap<String, String> find the longest key.

This makes me sad:

let mut klen = 0;
for (k, _) in &map {
  if k.len() > klen {
    klen = k.len();
  }
}

How would one express this using a more functional style of Rust?

(&map).map(|(key, _)| key.len()).max()
1 Like
map.keys().map(String::len).max()
4 Likes

I hope we'll eventually be able to write map(_::len). Would make this a bit nicer to use.

Is this something that's being worked on?

Not to my knowledge, but we can already write _ for type inference in some places, e.g. my_iterator.collect::<Vec<_>>() and this would be a neat expansion on that feature, IMO.

1 Like