将`not`关键字用于Cargo.toml中的条件依赖关系是否有效?

时间:2019-09-25 17:04:52

标签: rust rust-cargo

在Cargo.toml中使用cfg(not(...))声明依赖关系是否有效?

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
websocket = "0.23.0"

[target.'cfg(target_arch = "wasm32")'.dependencies.web-sys]
version = "0.3.22"
features = [
  "ErrorEvent",
  "MessageEvent",
  "WebSocket",
]

我收到以下代码的错误can't find crate "websocket"

macro_rules! if_not_wasm {
    ($($i:item)*) => ($(
        #[cfg(not(target_arch = "wasm"))] $i
    )*)
}

macro_rules! if_wasm {
    ($($i:item)*) => ($(
        #[cfg(target_arch = "wasm")] $i
    )*)
}

if_not_wasm! {
    extern crate websocket;
}

if_wasm! {
    extern crate web_sys;
}

if_wasm!中的导入按预期工作,但出现if_not_wasm!错误。我正在使用以下.cargo/config运行此程序:

[build]
target = "wasm32-unknown-unknown"

1 个答案:

答案 0 :(得分:1)

在您的宏规则条件下,您似乎只需要wasm32,而不是wasm