bounds checks are one, yeah, but I was also thinking about the tricks c++ could play with optimising undefined behaviour, as well as unsafe patterns involving shared access and pointer aliasing that a human could determine was safe in that specific case but that the rust compiler would balk at. and maybe it wasn't actually safe in which case the rust code would have the last laugh.
AFAIK, Rust benefits from the same optimizations that Clang can. In some areas Rust can actually benefit more from better aliasing information. But you do have to use the keyword unsafe for some things that you can Just Do in C++. You're right it can be difficult to achieve hand-optimized C++ levels of performance with Safe Rust.
fair, i was discounting the use of unsafe but it's just as valid as some of the jankier optimisations in c++