一部のライブラリは、パフォーマンスが低下した(たとえば、 NonZero
を使用しない)または機能が制限された(一部のAPIが無効になっている)安定したRustで実行できます。 新たな慣行は、ユーザーが不安定なRust機能を利用できるときに使用することを選択できるようにするために、 unstable
またはnightly
Cargo機能を備えているようです。
std::rc::Weak
がまだ安定していないための回避策として、 unstable
機能が有効になっている場合は_ありません_。 これを貨物に追加できますか?
デフォルトを逆にしてstable
機能を使用すると、不安定なRustでのみ使用できる/すべき依存関係にのみ問題が移動することに注意してください。
これも欲しいです。 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
が有効になっている場合は、ライブラリを安定版と互換性があるようにします。
現在の動作はバグですか、それとも意図されたものですか?
最も参考になるコメント
[target.'cfg(...)'.dependencies]
構文を使用すると、これは、cfg(feature = "...")
をRustコードの場合と同じように動作させることでサポートできます。現在、このようなセクションは、機能ステータスの有効化_に関係なく_として扱われます。これは、正直なところ、バグのように思えます。