IMHO there is no sense in this comparison. Rust have no "runtime" I mean GC or interpreter.
Rust compiler share backend with clang. So if you dare to use unsafe and satisfied with code that generates clang for C/C++ you always can write Rust code that will produce the same assembly as any C++ code (clang).
I tried this one is 27s faster than C++ version. (tried both clang and g++ ends ~80s, but the following version takes only 57s)
for a in v1.iter().take(1000) {
for (b,t) in v2.iter().zip(vsum.iter_mut()) {
*t += a * b;
}
}
And I believe this one can avoid bounds check.
You can alternatively but an assert_eq!(vec.len(), len); in front of the loop.