Rust seems to me much more like Haskell than C or C++. Try thinking about it that way and see if it makes more sense.
I think in Haskell's case, it's just doing too much with too little. Like how they can implement quicksort in three short lines of code, and to me it's just so much to unroll in my head at once; but it's hard to be sure for obvious reasons.
1. Forget everything you know and follow the types.