gpt4 book ai didi

rust - 如何根据 Rust 中的编译标志制作类型别名?

转载 作者:行者123 更新时间:2023-11-29 08:11:19 24 4
gpt4 key购买 nike

我想默认将类型 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 指定的。请注意,功能严格是附加的,您不能制作“排他性”功能:您不能使两者都无法指定u64u32。因此,您需要构建代码,使其即使在启用多个功能的情况下也能正常工作。

或者,您可以将设置放在某个配置文件中,然后写一个 build script发出类型别名作为代码(参见 code generation example )。

关于rust - 如何根据 Rust 中的编译标志制作类型别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50981122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com