【发布时间】:2016-01-13 21:25:14
【问题描述】:
我已关注quite a bit 或the documentation 并尝试关注reuse an example,但我的代码无法正常工作。
我的 Cargo.toml 看起来像这样:
[package]
name = "Blahblah"
version = "0.3.0"
authors = ["ergh <derngummit@ahwell.com"]
[dependencies]
[[bin]]
name = "target"
path = "src/main.rs"
[features]
default=["mmap_enabled"]
no_mmap=[]
mmap_enabled=[]
我想根据我传递给cargo build 命令的功能配置,使用不同于 mmap 的缓冲区来源在本地测试我的代码。我的代码中有这个:
if cfg!(mmap_enabled) {
println!("mmap_enabled bro!");
...
}
if cfg!(no_mmap) {
println!("now it's not");
...
}
编译器在if 语句体中都看不到代码,所以我知道cfg! 语句的计算结果都是假的。为什么?
我已阅读 Conditional compilation in Rust 0.10?,我知道这不是完全重复的,因为我正在寻找一个有效的示例。
【问题讨论】:
-
顺便说一下,互斥功能应该使用单个功能而不是两个独立的功能来完成,例如测试
feature = "mmap"和not(feature = "mmap")。具体来说,crate 的用户可以同时启用no_mmap和mmap_enabled,这似乎是有问题的。 -
我曾考虑过这一点,1) 包是内部的,2) 代码是独占的,也就是说如果另一个是,则不评估一个。
-
酷!听起来你已经掌控了一切。 (只是确保您知道权衡取舍。)
标签: rust