Cargo: 機能が有効になっていない場合のオプションの依存関係。

作成日 2015年07月27日  ·  3コメント  ·  ソース: rust-lang/cargo

一部のライブラリは、パフォーマンスが低下した(たとえば、 NonZeroを使用しない)または機能が制限された(一部のAPIが無効になっている)安定したRustで実行できます。 新たな慣行は、ユーザーが不安定なRust機能を利用できるときに使用することを選択できるようにするために、 unstableまたはnightly Cargo機能を備えているようです。

std::rc::Weakがまだ安定していないための回避として、 unstable機能が有効になっている場合は_ありません_。 これを貨物に追加できますか?

デフォルトを逆にしてstable機能を使用すると、不安定なRustでのみ使用できる/すべき依存関係にのみ問題が移動することに注意してください。

A-features

最も参考になるコメント

[target.'cfg(...)'.dependencies]構文を使用すると、これは、 cfg(feature = "...")をRustコードの場合と同じように動作させることでサポートできます。

[target.'cfg(not(feature = "std"))'.dependencies]
hashmap_core = "0.1.2"

現在、このようなセクションは、機能ステータスの有効化_に関係なく_として扱われます。これは、正直なところ、バグのように思えます。

全てのコメント3件

これも欲しいです。 midirには、複数のバックエンド(LinuxではALSAおよび/またはJACK、OSXではCoreMIDIおよび/またはJACK、WindowsではWinMM)があり、私の計画では、JACKを有効にして無効にするjack機能フラグを設定します。他の(ネイティブ)1つ。 また、JACK用にコンパイルする場合のALSA / CoreMIDIへの依存関係を削除したいので、ALSAがシステムにインストールされていない場合でも使用できます。

私の最初のアイデアは、上記で要求されたもの、つまり、 jack機能が選択されている場合にalsa-sys依存関係を無効にすること

これに代わる方法は、デフォルトの機能( native )を使用することです。これは、 jackが有効になっている場合、この機能のプラットフォーム固有の依存関係(つまり、 alsa-sys Linuxでは[target.x86_64-unknown-linux-gnu.features]ようなものを使用します。 また、現在、ターゲットプラットフォーム固有のdefault-feature-setを設定することは不可能のようです。これにより、問題も解決されます。

これまでのところ、依存するクレートでプラットフォームに依存する依存関係/機能を定義せずに機能する回避策を見つけることができませんでしたが、何かを見落としている可能性があります。

[target.'cfg(...)'.dependencies]構文を使用すると、これは、 cfg(feature = "...")をRustコードの場合と同じように動作させることでサポートできます。

[target.'cfg(not(feature = "std"))'.dependencies]
hashmap_core = "0.1.2"

現在、このようなセクションは、機能ステータスの有効化_に関係なく_として扱われます。これは、正直なところ、バグのように思えます。

私の場合も同じです。

[target.'cfg(not(feature = "std"))'.dependencies]
heapless = "0.2.7"

[features]
default = ["std"]
std = []

機能stdが有効になっていない場合にのみ、 heapless依存関係が必要です。
heaplessは夜間のみで機能しますが、 stdが有効になっている場合は、ライブラリを安定版と互換性があるようにします。

現在の動作はバグですか、それとも意図されたものですか?

このページは役に立ちましたか?
0 / 5 - 0 評価