7

私はmysql -crate 依存関係を含む錆びたプロジェクトを持っており、OS に依存しないようにしたいと考えています。

だから私は試しました: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 でも 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`

私の質問は、この場合、OS 依存関係をどのように処理すればよいですか?

4

1 に答える 1

2

cargoこれは私にはバグのように見えます。関連する問題の 1 つは、相互に排他的なターゲットで異なるバージョンの依存関係を宣言できない #3195 です。

編集:コードによると、これはバグというよりもサポートされていない機能です。

于 2016-10-27T11:37:55.093 に答える