如何在编译时创建字母数组?

时间:2019-04-15 11:25:40

标签: rust metaprogramming

我有一个经常被调用的函数,该函数需要向量中的字母。

在运行时这样做很容易:

let alphabet = (b'a'..b'z').map(|c| c as char).map(|c| c.to_string());
// Do some stuff with the alphabet...

好的,可以创建另一个函数来创建该字母,然后在其上应用记忆...

...但是我听说锈具有强大的宏功能。

在编译期间如何创建此向量-或最好是类型为str的项的固定大小的数组?

换句话说,我确实想要这样的东西

const alphabet: [&'static str; 26] = ["a", "b", ...];

自动生成。

还是最好不要担心这种优化,因为编译器还是会这样做?

1 个答案:

答案 0 :(得分:3)

如果要在编译时生成的内容很复杂,并且您不习惯手工对其进行硬编码,则可以为其编写一个build script。然后,构建脚本将生成“硬编码”锈代码并将其写入文件。然后,您将根据常规代码include生成文件。