如何在编译期间创建字母数组? [重复]

问题描述 投票:0回答:1

我有一个频繁调用的函数,它需要向量中的字母。

在运行时期间这样做很容易:

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", ...];

自动生成。

或者最好不要担心这种优化,因为编译器无论如何都会这样做?

rust metaprogramming
1个回答
3
投票

如果您希望在编译时生成的内容很复杂,并且您不方便手工编写硬编码,那么您可以为它编写一个build script。然后,构建脚本将生成“硬编码”防锈代码并将其写入文件。然后你将include从你通常的代码生成的文件。

© www.soinside.com 2019 - 2024. All rights reserved.