Rust is really missing higher kinded types, though. You can do a lot of neat haskell tricks with it, but you still can't write functions that are generic over "monads" for example. You have to write a function for lists, a function for options and a function for results, you can't really treat them as the _same thing_, even though they all have similar methods.