In C++, I could put an array of 1000 int
s onto the heap like this:
int size = 1000;
int* values = new int[size];
delete[] values;
I can't figure out how to do the equivalent in Rust.
let size = 1000;
let values = Box::new([0; size]) // error: non-constant path in constant expression
To my understanding, Rust forces the size of all arrays to be known at compile time and doesn't let you use expressions when creating arrays.
Arrays in Rust are fixed-length. If you want a dynamically-sized array, use Vec
. In this case, the simplest way is with the vec!
macro:
let size = 1000;
let values = vec![0; size];
Also, if you're super concerned about Vec
being three words long and don't need to resize the storage after it's created, you can explicitly discard the internal capacity, and bring values
down to two words on the stack:
let values = values.into_boxed_slice(); // returns a Box<[i32]>.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With