为什么我不能使用函数返回编译时常量作为常量?

时间:2015-03-25 08:09:41

标签: rust

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

我认为编译器应该能够将arr0的长度确定为编译时常量,不是吗?仍然将此标记为错误,表示找到变量而不是常量整数。

  1. 为什么?
  2. Rust中是否有constexpr(C ++)函数?
  3. 版本:

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

1 个答案:

答案 0 :(得分:16)

因为尚未实施。扩展计为常量表达式的Rust子集可以向后兼容,所以在1.0之前不急于这样做,甚至不能解决它应该如何完成(应该允许多少,是否应该有{ {1}}机制以及应该有多强大,等等。)

与此同时,宏和语法扩展涵盖了许多相同的用例(后者比constexpr强大得多)。