我想给类型起别名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(使用前将#替换为@)