Writing the following works perfectly:
static count : uint = 2;
fn main() {
let larger : [uint, ..count*2];
}
While the following:
static count : uint = 2 as uint;
fn main() {
let larger : [uint, ..count*2];
}
Fails with error: expected constant expr for vector length: can't do this op on a uint and int. This looks like a problem with the type inference, and using 2u fixes this example, but breaks the one that previously worked.
When the array is being initialized rather than having the type set:
let larger = [0u, ..count*2];
The error is a much more cryptic error: expected constant integer for repeat count, found variable, and which one fails can again be swapped by multiplying by 2u instead of 2.
Writing the following works perfectly:
While the following:
Fails with
error: expected constant expr for vector length: can't do this op on a uint and int. This looks like a problem with the type inference, and using2ufixes this example, but breaks the one that previously worked.When the array is being initialized rather than having the type set:
The error is a much more cryptic
error: expected constant integer for repeat count, found variable, and which one fails can again be swapped by multiplying by2uinstead of2.