ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΌ Rust Ρ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ NonZero
) ΠΈΠ»ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ (Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ API ΠΎΡΠΊΠ»ΡΡΠ΅Π½Ρ). ΠΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ Π² Π½ΠΎΠ²ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ unstable
ΠΈΠ»ΠΈ nightly
Cargo, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Rust, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ.
Π― ΠΏΡΠ±Π»ΠΈΠΊΡΡ rust-rc ΠΊΠ°ΠΊ std::rc::Weak
Π½Π΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ. ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΏΠΎΡ
ΠΎΠΆΠ΅, Π½Π΅Ρ ΡΠΏΠΎΡΠΎΠ±Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΡΠΈΠΊ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΎ _Π½Π΅_, ΠΊΠΎΠ³Π΄Π° Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ unstable
. ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Cargo?
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ stable
ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ / Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΌ Rust.
Π― ΡΠΎΠΆΠ΅ Ρ
ΠΎΡΡ ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ. Π midir Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΡΠΊΡΠ½Π΄ΠΎΠ² (ALSA ΠΈ / ΠΈΠ»ΠΈ JACK Π² Linux, CoreMIDI ΠΈ / ΠΈΠ»ΠΈ JACK Π² OSX, WinMM Π² Windows), ΠΈ Ρ ΠΏΠ»Π°Π½ΠΈΡΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ»Π°Π³ ΡΡΠ½ΠΊΡΠΈΠΈ jack
ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ JACK ΠΈ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ Π΄ΡΡΠ³ΠΎΠΉ (ΡΠΎΠ΄Π½ΠΎΠΉ). Π― ΡΠ°ΠΊΠΆΠ΅ Ρ
ΠΎΡΠ΅Π» Π±Ρ ΡΠ΄Π°Π»ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ ALSA / CoreMIDI Π² ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄Π»Ρ JACK, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π°ΠΆΠ΅, Π΅ΡΠ»ΠΈ ALSA Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΠΎΡ ΠΏΠ΅ΡΠ²Π°Ρ ΠΈΠ΄Π΅Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π·Π°ΠΏΡΠΎΡΠ΅Π½ΠΎ Π²ΡΡΠ΅, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ alsa-sys
Π΅ΡΠ»ΠΈ Π²ΡΠ±ΡΠ°Π½Π° ΡΡΠ½ΠΊΡΠΈΡ jack
.
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ ΡΡΠΎΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, native
), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π°, Π΅ΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π° jack
, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΠΌΠ΅ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°Π²ΠΈΡΡΡΠΈΠ΅ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ (Π° ΠΈΠΌΠ΅Π½Π½ΠΎ alsa-sys
Π² Linux ΠΈ CoreMIDI Π² OSX), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ [target.x86_64-unknown-linux-gnu.features]
. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΈΠΌΠ΅ΡΡ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΡΠΈΠ»ΠΎ Π±Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΠΊΠ° ΠΌΠ½Π΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π½Π°ΠΉΡΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π» Π±Ρ Π±Π΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ / ΡΡΠ½ΠΊΡΠΈΠΉ, Π·Π°Π²ΠΈΡΡΡΠΈΡ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΡΠΈΠΊΠ°Ρ , Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ ΡΡΠΎ-ΡΠΎ ΡΠΏΡΡΡΠΈΠ».
Π‘ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ [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 = []
ΠΠ½Π΅ Π½ΡΠΆΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ heapless
Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ std
Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π°.
heapless
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½ΠΎΡΡΡ, Π½ΠΎ Ρ Ρ
ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΌΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π±ΡΠ»Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° ΡΠΎ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ, Π΅ΡΠ»ΠΈ std
Π²ΠΊΠ»ΡΡΠ΅Π½.
Π―Π²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΠΎΠ½ΠΎ Π·Π°Π΄ΡΠΌΠ°Π½ΠΎ?
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π‘ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ
[target.'cfg(...)'.dependencies]
ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°ΡΡ, ΠΏΡΠΎΡΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠΈΠ²cfg(feature = "...")
Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² ΠΊΠΎΠ΄Π΅ Rust:Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ°ΠΊΠΎΠΉ ΡΠ°Π·Π΄Π΅Π» ΡΡΠΈΡΠ°Π΅ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΡΠ°ΡΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎ, ΡΠ΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΌΠ½Π΅ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ.