Thoughts
It's really dumb that `get` and `get_mut` are different. I don't know why it can't figure out whether I need a mutable or immutable
reference. I've spent a little bit of time trying to figure out what types my own variables should be, but I've spent a lot of time trying to figure out what standard library functions will give me the value with the correct type + ownership + mutability + lifetime semantics.
You just end up in these absurd convoluted scenarios where you have an owned mutable `Option`. You want to unwrap it and mutate the value inside it. Well that's obviously `&a.as_mut().unwrap()`. You want to move the ownership of the contained object but not the optional, that's `.take().unwrap()`, you want ownership of the value and the option, that's `.unwrap()`. You want a non-mutable reference to the interior value that's `&a.as_ref().unwrap()`.
And here's the thing—I'm not complaining about explicit move semantics or explicit mutability. I'm talking about poor implementation of those semantics. There should be some convention or language feature where I can go from `get()` to `get_mut` without having to go to the documentation and searching for all hashmap methods that return `&mut`, and having that possibility that there is no `get_mut` and it's impossible to do what I want.