8
votes
let arr0 = [0u8; 15];
let arr1 = [0u8; arr0.len()]; // this fails

I think the compiler should be able to determine the length of arr0 as a compile time constant, no? Still this is flagged as error saying that variable found instead of constant integer.

  1. Why?
  2. Is there constexpr (C++) function in Rust?

Version:

rustc 1.0.0-nightly (ecf8c64e1 2015-03-21) (built 2015-03-22)
1

1 Answers

16
votes

Because it hasn't been implemented yet. Extending the subset of Rust that counts as constant expressions can be done backwards-compatibly, so there's no rush to do so before 1.0, and it's not even settled how it should be done (how much should be allowed, whether there should be a constexpr mechanism and how powerful it should be, etc).

In the meantime, macros and syntax extensions cover many of the same use cases (and the latter are strictly more powerful than constexpr ever will be).