相关疑难解决方法(0)

是否有所有cfg功能的列表?

锈有能力在构建检查配置时间,例如,#[cfg(target_os = "linux")]或者 if cfg!(target_os = "linux") {...},在那里target_os是一个功能.

是否有可以在Rust中检查的所有(或至少是常用的)功能的列表?


查看有关属性的 相关问题是否有任何标准属性的详尽列表?.

rust rust-cargo

16
推荐指数
2
解决办法
8173
查看次数

如何在编译期间检查 Rust 中设置的功能?

我正在尝试使用 Rusts 功能有条件地编译我的板条箱中的模块,并且仅在启用功能时才使用它。当设置该功能时,条件编译工作正常,但在未设置该功能时拒绝编译。

我使用相同的功能标志有条件地导入主模块中的模块,因此我的假设是,当不使用该功能时不应导入该模块。

#[cfg(feature = "debug")]
pub mod k {
    pub struct S { pub x: i32, pub y: i32}
}
Run Code Online (Sandbox Code Playgroud)

以及我如何在 main 中使用它

pub fn main() {
    if cfg!(feature = "debug") {
        use self::k;
        let _s = k::S {x: 4, y: 5};
    }

    let g = vec![1, 2, 4];
    println!("{:?}", g);
}
Run Code Online (Sandbox Code Playgroud)

如果我通过标志启用该功能,--features那么它会按预期进行编译:

#[cfg(feature = "debug")]
pub mod k {
    pub struct S { pub x: i32, pub y: i32}
}
Run Code Online (Sandbox Code Playgroud)

但是,当我没有通过时,--features它会失败,我的期望是它应该跳过带有该cfg!集合的块。 …

rust rust-cargo

7
推荐指数
1
解决办法
5121
查看次数

如何排除在OS X上构建文件?

我有src/bin/linux-only.rs一些只在Linux上工作的东西(例如只存在于Linux上的libc绑定).我想将该文件排除在OS X上.

我开始#[cfg(target_os = "linux")]使用每个块,linux-only.rs但是这会使源代码更加混乱.

有没有更好的方法来做到这一点?

conditional-compilation rust rust-cargo

4
推荐指数
1
解决办法
240
查看次数

如何在Rust中使用条件编译宏的示例

我已经遵循了不少文件,并试图重用一个例子,但我不能让我的代码工作.

我的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=[]
Run Code Online (Sandbox Code Playgroud)

我想根据我传递给cargo build命令的功能配置,使用与mmap不同的缓冲区来本地测试我的代码.我的代码中有这个:

if cfg!(mmap_enabled) {
    println!("mmap_enabled bro!");
    ...
}
if cfg!(no_mmap) {
    println!("now it's not");
    ...
}
Run Code Online (Sandbox Code Playgroud)

编译器没有看到任何一个if语句体中的代码,所以我知道这两个cfg!语句都在评估为false.为什么?

在Rust 0.10中读过条件编译?我知道这不是一个完全重复,因为我正在寻找一个有效的例子.

rust

3
推荐指数
1
解决办法
1184
查看次数

标签 统计

rust ×4

rust-cargo ×3

conditional-compilation ×1