如何在 Rust 中根据编译标志创建类型别名?

2024-01-10

我想给类型起别名uint to u32默认情况下,但可以在编译期间设置一个标志将其更改为usize。代码应该是这样的:

#[cfg(uint='u32') || default]
type uint = u32;
#[cfg(uint='usize')]
type uint = u64;

当我编译时,我可以使用cargo build --uint=usize。我应该做什么才能使这项工作成功?


您想要的功能不存在。有几种方法可以伪造它。

首先,您可以使用以下功能:

#[cfg(all(feature="uint-is-u16", not(any(feature="uint-is-u32", feature="uint-is-u64"))))]
type uint = u16;
#[cfg(not(any(feature="uint-is-u16", feature="uint-is-u64")))]
type uint = u32;
#[cfg(all(feature="uint-is-u64", not(any(feature="uint-is-u16"))))]
type uint = u64;

这些是使用指定的cargo build --features=uint-is-u64。请注意,特征是strictly添加剂,还有你cannot打造“专属”功能:i.e.你不能让同时指定两者变得不可能u64 and u32。因此,您需要构建代码,以便即使启用多个功能也能正常工作。

或者,您可以将设置放在配置文件中的某个位置,然后编写构建脚本 https://doc.rust-lang.org/cargo/reference/build-scripts.html它将类型别名作为代码发出(请参阅代码生成示例 https://doc.rust-lang.org/cargo/reference/build-scripts.html#case-study-code-generation).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Rust 中根据编译标志创建类型别名? 的相关文章

随机推荐