4

У меня есть проект ржавчины, где я включаю зависимость mysql -crate, и я хочу, чтобы она была независимой.Cargo.toml OS Dependency for 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 = [] 

Ошибка происходит уже с минимальным основным: 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, для самого тузда обрешетки:

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` 

Так что мой вопрос в том, как В этом случае я обрабатываю OS-Dependency?

+0

Я хотел бы изучить [условную компиляцию] (http://rustbyexample.com/attribute/cfg.html); вам, вероятно, понадобятся две версии каждой функции/модуля, зависящие от платформы. Хотя трудно сказать, какой метод будет лучше для вас, так как вы не предоставили код, я бы предположил использовать этот атрибут в функции и добавить ваши 'use' декларации * внутри функции *. – Aurora0001

+0

@ Aurora0001 Я не использую зависимость os в своем собственном коде, от этого зависит ящик mysql. –

+0

О, я понимаю, что вы имеете в виду. Я посмотрел на другие ящики, которые используют 'mysql', чтобы увидеть, справляются ли они с этим, как вы, и кажется, что ни один из них не использует условия в своем' Cargo.toml', поэтому я не знаю, что может вызвать это. Может быть, стоит спросить у GitHub, если вы не получите ответа здесь? – Aurora0001

ответ