Arrays are defined as data structures that have a known size at compile time. Rust takes this very seriously, and the array constructor will only take constants to denominate size in an array. [0u8; 4] will work, but let my_array_size = 2 * 2; [0u8; my_array_size] won't.
So, how do you dynamically reallocate a new array then? In Rust, there is also something called slices, which are views into a sequence data structure, akin to an array. These are a great fit when stored inside a Box pointer: allocated on the heap, it has all the benefits of an array with a dynamic size.
As previously mentioned, this implementation goes with Java's ArrayList growth strategy and increases its size by at least 50% each time more capacity is required. While this has the unfortunate effect of exponential growth, it has worked for Java—a very popular language—for decades.
The Rust implementation is close to its Java pendant; in fact, only the oversized variety is missing...