我想默认将类型uint
别名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
指定的。 请注意,功能是严格累加的,您不能创建"独占"功能:即您不能同时指定u64
和u32
。 因此,您需要构建代码,使其即使启用了多个功能也能正常工作。
或者,可以将设置放在配置文件中的某个位置,并编写一个生成脚本,将类型别名作为代码发出(请参阅代码生成示例(。