Зависимость ОС Cargo.toml для ящика

У меня есть проект ржавчины, в который я включаю зависимость mysql -crate, и я хочу, чтобы она была ос независимый.

Итак, я попробовал: Cargo.toml

[package]
name = "test"
version = "0.1.0"
authors = ["daMaex"]

[dependencies]
ws = "*"
clap = "*"
env_logger = "*"

[target.'cfg(any(unix, macos))'.dependencies.mysql]
version = "*"
default-features = false
features = ["socket"]

[target.'cfg(windows)'.dependencies.mysql]
version = "*"
default-features = false
features = ["pipe"]

[features]
default = []
ssl = []

Ошибка уже происходит с минимальным main: src / main.rs

fn main () {
}

Но сборка не удалась. В macos / unix он всегда хочет скомпилировать канал и получить неразрешенный импорт:

error[E0432]: unresolved import `std::os::windows::io::RawHandle`
  --> /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/named_pipe-0.2.2/src/lib.rs:38:5
   |
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Could not find `windows` in `std::os`

и то же самое происходит в Windows для самого ящика mysql:

error[E0432]: unresolved import `std::os::unix`
  --> C:\Users\user\.cargo\registry\src\github.com-1ecc6299db9ec823\mysql-7.1.2\src\io.rs:24:5
   |
24 | use std::os::unix as unix;
   |     ^^^^^^^^^^^^^^^^^^^^^ no `unix` in `std::os`

Итак, мой вопрос: как мне справиться с зависимостью от ОС в этом случае?


person Da Maex    schedule 27.10.2016    source источник
comment
Я бы изучил условную компиляцию; вам, вероятно, понадобятся две версии каждой функции / модуля, зависящей от платформы. Хотя трудно сказать, какой метод подойдет вам лучше всего, поскольку вы не предоставили код, я бы, вероятно, предложил использовать этот атрибут в функции и добавить ваши use объявления внутри функции.   -  person Aurora0001    schedule 27.10.2016
comment
@ Aurora0001 Я не использую зависимость os в собственном коде, от нее зависит mysql.   -  person Da Maex    schedule 27.10.2016
comment
О, я понимаю, что ты имеешь в виду. Я посмотрел на другие ящики, которые используют mysql, чтобы увидеть, обрабатывают ли они это, как вы, и кажется, что ни один из них не использует условия в своих Cargo.toml, поэтому я не знаю, что могло бы вызвать это. Может, стоит спросить на GitHub, если здесь нет ответа?   -  person Aurora0001    schedule 27.10.2016
comment
Мне это кажется cargo ошибкой.   -  person WiSaGaN    schedule 27.10.2016


Ответы (1)


Мне это кажется cargo ошибкой. Одна из связанных проблем - Невозможно объявить разные версии зависимостей во взаимоисключающих целях # 3195.

Изменить: это скорее неподдерживаемая функция, чем ошибка в соответствии с код.

person WiSaGaN    schedule 27.10.2016