How to malloc an array in heap like C?

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.