It's a general purpose programming language, so you can do pretty much everything with it. It isn't a scripting language though.
Difficult but interesting question. I think C++ is an alternative. Maybe to some extent also Java/Kotlin and C#, though these use garbage collection while Rust and C++ can do without.
Good sides:
- memory safety by default (unless you use
unsafeRust) - speed (as fast as C, I think)
- support for
async - good package system and testing framework
- memory effecient (regarding memory use, not program size!)
- stability
Bad sides (my perspective):
- difficult to master
- sometimes prone to boilerplate code or verbose syntax due to some limitations of the type system (e.g. regarding method delegation)
asynchas been added to the language at a later stage, soasyncintegration sometimes feels limited and complex (pinning, lifetime issues, etc.)- error handling sometimes feels like having a lot of friction (one thing I ran into can be found here, another example there)
- complexity of the language leads to inevitable design flaws in
std(e.g. this one) which are probably impossible to fix
Overall, I wished for a better abstraction of certain core concepts, especially in regard to control flow (like fallibility, yieldable closures).
P.S.: Regarding these negative sides, one should also consider that there's probably no real alternative around currently, which would fix all these issues (while keeping Rust's advantages).