No. The “variadic generics problem” is how Rust will permit users to write generics with a variable number of type parameters, as C++ does:
template<typename T> T adder(T v) { return v; }
template<typename T, typename... Args> T adder(T first, Args... args) {
return first + adder(args...);
}
“Heterogeneous” means that the type parameters may be different types.
Arrays cannot solve the variadic generics problem, and cannot be heterogeneous.
Edit: the reasons we wouldn’t just adopt something like the C++ solution are that, first, it cannot work without either function overloading (to provide a base-case and terminate the recursion) or const-if (to manually handle the base case within the same function); and, second, it’s just not very clean or easy to work with. (C++ has some fairly ugly standard library features to emulate iteration over the types, but it’s…still not wonderful to work with.)