Yep. As far as I know, no language other than C and C++ has this many ridiculously obscure ways to cause UB.
Most languages, including but by no means limited to Rust, try pretty hard to not give you any way to cause UB without some sort of incantation. Java made a big deal of “no UB” back in the '90s.
Rust's innovation, rather, was “no UB” while still using pointers and still letting you control memory management (stack, heap, reference counting, etc).