one of my favorite things about rust that I'd miss if i wrote haskell again is how in rust you can just be like, redefine a binding.
like
let x = whatever
let x = func(x)
in haskell you gotta do
let x' = whatever
let x = func(x')
and that sucks imo (i personally like to do the primes first and have the one without the prime be the final thing). and its because rust is a lot more imperative than haskell is.
haskell, you can still do it the way rust does, but now you gotta be inside a monad for purely language-level reasons. the compiler will optimize it all away but its just like cmonnnn kinda sucks lol
of course the advantage to the haskell way is it makes recursion dead-simple since you can just self-reference in the right hand side of the binding