It wouldn't be at all the same thing anymore. The real purpose and challenge behind designing it was providing memory safety without a garbage collection scheme. If someone wants a high level language, Rust isn't a good fit. It's not ML with type classes. It's a C replacement.
Garbage collection is an extremely core part of ML. If you look at Rust as ML with type classes, you're going to be very disappointed, because you're missing that the language is entirely designed around being low level with low-level control, no GC and zero cost abstractions.
the whole point is that it wouldn't be the same any more
the big part for rust, for me, is the single ownership. things like preemptive gc wouldn't change the language too much but it would change every program written in it
to the point where most would be easier
How would garbage collection simplify it if you're going to keep the same model for ownership and borrowing ownership? It would effectively be an implementation detail. You could certainly implement the safe subset of Rust with a GC but what makes that different than how it is?
It doesn't have currying or other distinctive features of ML beyond sum types and pattern matching. It shares a lot more with C++ than it does with ML, beyond just syntax. It has a bit of ML heritage, but that's it. Extending ML with type classes wouldn't fundamentally change it.
The core of Rust and what makes it unique is the ownership system, move semantics, borrowing / lifetimes, etc. It has sum types and pattern matching because they're standard features in any modern programming language with a decent type system. It wasn't designed around those.