Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 64.3MB ·虚拟内存 1300.3MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
#[cfg(foo)] #[cfg(bar = "baz")]
#[cfg(any(unix, windows))] #[cfg(all(unix, target_pointer_width = "32"))] #[cfg(not(foo))]
#[cfg(any(not(unix), all(target_os="macos", target_arch = "powerpc")))]如果你正在使用Cargo,怎样打开或关闭这些开关,它们在Cargo.toml文件中的[features]节进行设置。
[features] # no features by default default = [] # The “secure-password” feature depends on the bcrypt package. secure-password = ["bcrypt"]当你这么做了,Cargo会给rustc传递一个参数:
--cfg feature="${feature_name}"这些cfg标志将会决定哪个一个被激活,因此,哪个代码被编译。我们看一下这段代码:
#[cfg(feature = "foo")] mod foo { }如果我们使用cargo build --features "foo"编译,它将会把--cfg feature="foo"标志传递给rustc,并且输出将会有一个foo模块。如果我们使用常规的cargo build,没有额外的标志被传递,将不会有foo模块存在。
#[cfg_attr(a, b)]如果a被使用cfg设置过属性,则跟#[b]一样。
if cfg!(target_os = "macos") || cfg!(target_os = "ios") { println!("Think Different!"); }在编译阶段依据配置设定,这些将会被替换成true或false。
lifetime,生命周期。rust把生命周期提到了语法糖的层面,解决引用-借用问题。 lifetime机制,确保解决所有的borrow借用是有效的。 lifetime和scope有关联,但有差别。 例 ...