У меня есть проект ржавчины, где я включаю зависимость 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?
Я хотел бы изучить [условную компиляцию] (http://rustbyexample.com/attribute/cfg.html); вам, вероятно, понадобятся две версии каждой функции/модуля, зависящие от платформы. Хотя трудно сказать, какой метод будет лучше для вас, так как вы не предоставили код, я бы предположил использовать этот атрибут в функции и добавить ваши 'use' декларации * внутри функции *. – Aurora0001
@ Aurora0001 Я не использую зависимость os в своем собственном коде, от этого зависит ящик mysql. –
О, я понимаю, что вы имеете в виду. Я посмотрел на другие ящики, которые используют 'mysql', чтобы увидеть, справляются ли они с этим, как вы, и кажется, что ни один из них не использует условия в своем' Cargo.toml', поэтому я не знаю, что может вызвать это. Может быть, стоит спросить у GitHub, если вы не получите ответа здесь? – Aurora0001