let arr0 = [0u8; 15];
let arr1 = [0u8; arr0.len()]; // this fails
我认为编译器应该能够将arr0的长度确定为编译时常量,不是吗?仍然将此标记为错误,表示找到变量而不是常量整数。
版本:
rustc 1.0.0-nightly (ecf8c64e1 2015-03-21) (built 2015-03-22)
答案 0 :(得分:16)
因为尚未实施。扩展计为常量表达式的Rust子集可以向后兼容,所以在1.0之前不急于这样做,甚至不能解决它应该如何完成(应该允许多少,是否应该有{ {1}}机制以及应该有多强大,等等。)
与此同时,宏和语法扩展涵盖了许多相同的用例(后者比constexpr
强大得多)。