Cargo.toml板条箱的OS依赖性

Da *_*aex 5 operating-system dependency-management rust rust-crates rust-cargo

我有一个锈项目,其中包括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 = []
Run Code Online (Sandbox Code Playgroud)

该错误已经发生,并且使用最小的main:src / main.rs

fn main () {
}
Run Code Online (Sandbox Code Playgroud)

但是构建失败。在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`
Run Code Online (Sandbox Code Playgroud)

在Windows上,对于mysql crate本身也是如此:

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`
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,在这种情况下我该如何处理OS依赖关系?

WiS*_*GaN 2

这对我来说看起来像是一个cargo错误。一个相关问题是无法在互斥目标中声明不同版本的依赖项#3195

编辑:根据代码,它更像是一个不受支持的功能,而不是一个错误。