Допустимо ли использовать ключевое слово `not` для условной зависимости в Cargo.toml? - PullRequest
0 голосов
/ 25 сентября 2019

Допустим ли синтаксис использования cfg(not(...)) в Cargo.toml для объявления зависимостей?

[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 Ответ

1 голос
/ 26 сентября 2019

Похоже, вам просто нужно wasm32, а не wasm, в вашем условии правил макросов.

...