While the new syntax tries to use Rust's generics, the one that mimics C prototypes is still supported, to allow easier migration from code bases written in C. No decision has been made to obsolete the C syntax.
Rust is safer for SIMD programming because the code is marked safe.
This is partially correct, SIMD code for Rust is marked as `unsafe` so in that sense it is still possible for a security related bug to creep in the code. However, the rest of the code still passes through the strict Rust compiler checks.
CPU features code generation and feature detection is handled directly in Rust.
Correct, Rust provides the `#[target_feature(enable = "<extension>")]` which can be used to denote that a particular function requires the needed `<extension>` to be executed. The generated code will use instructions from that `<extension>`. In C there is no common way to do that, though there are some GCC/Clang extensions that might do this. Note that the runtime detection still has to be done manually, using `is_aarch64_feature_detected` macro in the case of Aarch64. In C one would have to check `HWCAPS` directly, but many applications/libraries are doing that in a non-uniform way.
`std::simd` can be quite powerful and generate optimal code but there are specific instructions on all architectures that do not map well to a portable API. To take advantage of these instructions, you have to use `std::arch` if they have corresponding intrinsics enabled.