Rust Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Rust?
Rust Π½Π°Π±ΠΈΡΠ°Π΅Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π΅Π³ΠΎ ΡΠ΅Π½Π½ΠΎΡΡΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΏΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Rust.
Π§ΡΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Ρ Rust ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ²?
Π ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΡΠΌ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°Π½Π΅Π΅ Π²ΡΠ΅ ΡΠ·ΡΠΊΠΈ Π²ΡΠ±ΠΈΡΠ°Π»ΠΈ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΡΠΎΡΠΎΠ½: Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
Π£ΠΊΠ»ΠΎΠ½ Π² ΡΡΠΎΡΠΎΠ½Ρ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΠΈ Π»ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΡΠ·ΡΠΊ Haskell, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΡ ΠΏΡΠΈΡΠΎΠ΄Ρ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΡΡΠΎΠΊΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΡΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ, Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΡΠ°Π²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠ»Π°Π²Π½ΡΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ β ΡΡΠΎ Π½ΠΈΠ·ΠΊΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΡΡΠ΅Π±ΡΡΡΠΈΠΉ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° Haskell.
Rust Π²ΠΎΠ±ΡΠ°Π» Π² ΡΠ΅Π±Ρ Π»ΡΡΡΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ C++ ΠΈ Haskell, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΠΎΠ³ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΎΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΠ².
Π ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΡΠ΅Π»Π΅ΡΡΡ ΡΠ·ΡΠΊΠ° Rust?
ΠΠΎΠ»ΡΠ΅Π±Π½ΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Rust ΡΡΠ°Π»ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΡΠ½ΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΡΡΠ½ΠΎΡΡΠΈ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° (owner), ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠ»ΠΈ Π·Π°Π½ΡΠ» ΠΏΡΠΎΠ΅ΠΊΡ (mutable borrow), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ± ΠΎΠ±ΡΡΠ½ΠΎΠΌ Π·ΡΠΈΡΠ΅Π»Π΅ (immutable borrow).
ΠΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Java ΠΈΠ»ΠΈ ΠΆΠ΅ C++, ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, Ρ ΠΎΡΡ Π²ΠΈΠ΄ Π΄Π°Π½Π½ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ. Π Rust ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π΄Π°Π½Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π·Π°Π΄Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π»ΠΈΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ΄Π±ΠΎΡΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΈ ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² Ρ ΠΎΠ΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
ΠΡΠΎΠΌΡ ΡΠ·ΡΠΊΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΠΉΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° Π½Π΅ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΡΡΡ, Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π°ΠΌΠΈ ΡΠ·ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½Ρ Π·Π°Π²Π΅ΡΡΠΈ Π² ΡΡΠΏΠΈΠΊ ΠΏΡΠΈ Π½Π°ΡΠ°Π»Π΅ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ:
Π―Π·ΡΠΊ Rust ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡΡΠ΅ΡΡΡ
ΠΡΠ°ΠΊ, Ρ ΠΎΡΠΈΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π²Π°ΡΠ΅ΠΌΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈΠ½Π½ΠΈΠΊΠ° (15 ΠΌΠ°Ρ 2016 Π³ΠΎΠ΄Π° Π΅ΠΌΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΠ»ΡΡ Π³ΠΎΠ΄) β Rust. ΠΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Mozilla, ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ: ΡΠΊΠΎΡΠΎΡΡΡ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ ΡΡΠ³ΠΎΠ½ΠΎΠΌΠΈΠΊΠ°. Π‘Π°ΠΌΠΈ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΡΠΎΠΌΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π΅ΡΠΎΡΡΠ½ΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ² C/C++. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΎΠΏΡΠΎΡΡ ΠΏΠΎΡΡΠ°Π»Π° StackOverflow, ΠΈΠΌΠ΅Π½Π½ΠΎ Rust ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π»ΡΠ±ΠΈΠΌΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΡΠ·ΡΠΊ. ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΆΠ΅ ΠΎΠ½ ΠΈΠ· ΡΠ΅Π±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ.
Rust Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠ°
ΠΠ΅ Ρ ΠΎΡΠ΅ΡΡΡ Π½ΠΈΠΊΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ°Π½ΡΠ²Π°ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π»Π΅Π΅ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΠ΅: Rust Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΎ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½ΠΎ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΡΡΡΡ ΡΠ·ΡΠΊΠ° ΠΈ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, ΠΌΠ°Π»ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ. ΠΠΎ-Π²ΡΠΎΡΡΡ , Π²ΡΡΡΠΈΡΡ Π΅Π³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ Π΄Π°Π»ΡΠΊΠΎΠΌΡ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΌΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ. Π’Π°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ IT-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π·Π΄ΡΠ°ΠΆΠ°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΌΠ°Π»Π΅ΠΉΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ·ΡΠΊΠ΅ ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡ Π² ΡΡΠΏΠΈΠΊ.
ΠΠΏΡΠΎΡΠ΅ΠΌ, Rust Π±ΡΡΡΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ (ΠΊΠ°ΠΆΠ΄ΡΠ΅ 6 Π½Π΅Π΄Π΅Π»Ρ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π½ΠΎΠ²ΡΠΉ ΡΠ΅Π»ΠΈΠ·), ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΡΡΡΡ, Π° Π½Π°ΠΉΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΡΠΆΠ΅ Π½Π΅ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΡΠ΄Π°.
ΠΠ°ΠΊ ΠΈΠ·ΡΡΠ°ΡΡ
ΠΠΎΡΡΠΈ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Rust Π²Π΅ΡΡΠΌΠ° ΠΎΠ±ΡΠΈΡΠ½ΠΎ ΠΈ Π΄ΠΎΠ±ΡΠΎΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π° ΡΠΎΠ²Π΅ΡΠΎΠΌ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ Π² IRC (Π΅ΡΡΡ ΡΡΡΡΠΊΠΈΠΉ ΡΠ°Π·Π΄Π΅Π») ΠΈ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΎΡΡΠΌ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΠ½Π΅ΠΌΠ½ΠΎΠ³Ρ ΡΡΠ°Π»ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΊΠ½ΠΈΠ³ΠΈ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠ΅. ΠΠΎΠΊΠ° ΡΡΡΠ΄Π½ΠΎ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ, Π½ΠΎ ΡΠ°ΠΊΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π΅ΡΡΡ.
ΠΠ»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΠΏΡΠΎΡΡΠ» Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ°Π΄ΠΈΡ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π°, Π½Π° GiHub ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠΉΠΌΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ RFC ΠΈ ΠΊΠΎΠΌΠΌΠΈΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠΈΡΡ Π»ΠΈΡΠ½ΠΎ ΠΈΠ»ΠΈ Ρ ΠΎΡΡ Π±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΉ ΠΏΠΎ Rust, Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ Π½Π° Π²ΡΠΎΡΡΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ Π³ΠΎΠ΄Π°. ΠΠΎΡ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡ:
ΠΡ Π° ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΠ΅ΠΌΠΈ, ΠΊΡΠΎ ΡΡΠΈΡΠ°Π΅Ρ Rust ΡΠ²ΠΎΠΈΠΌ ΠΏΡΠΈΠ·Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ ΡΠΏΡΠΎΡΠΈΡΡ Ρ Π½ΠΈΡ Π²ΡΠ΅ ΠΏΡΠ΅ΠΌΡΠ΄ΡΠΎΡΡΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΡΠ·Π°ΡΡΡΡ Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΎΡΠ°ΠΌΠΈ ΠΈ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌΠΈ Π²ΡΡΡΠ΅Ρ ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠΎΠ² ΡΠ·ΡΠΊΠ° Π² ΠΠΎΡΠΊΠ²Π΅.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΠ±Π»ΠΈΡΡΡ ΡΠΎ, ΠΎ ΡΡΠΌ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠ°Π½Π΅Π΅, Π²ΡΠ΄Π΅Π»ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠ»ΡΡΡ ΠΈ ΠΌΠΈΠ½ΡΡΡ ΡΠ·ΡΠΊΠ° Rust.
ΠΠ»ΡΡΡ:
ΠΠΈΠ½ΡΡΡ:
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΊ ΠΎΡΠ»ΠΈΡΠΈΡΠΌ, Π²ΡΠΎΠ΄Π΅ Π·Π°ΠΌΠ΅Π½Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ, Π±ΡΡΡΡΠΎ ΠΏΡΠΈΠ²ΡΠΊΠ°Π΅ΡΡ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π³Π»Π°Π·Π° ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ, ΡΡΠΊΠΈ Π½Π°Π±ΠΈΠ»ΠΈΡΡ, Rust ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π²ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠ·ΡΠΊ, ΠΏΡΠΎΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π΅Π΅ C++, Π½ΠΎ ΡΡΡΡΠΏΠ°ΡΡΠΈΠΉ ΠΏΠΎ Β«ΠΊΡΠ°ΡΠΈΠ²ΠΎΡΡΠΈΒ» ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ·ΡΠΊΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΆΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ Rust ΠΎΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠΎΠ² β ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ.
ΠΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΠΎΡΡΡ
ΠΠ° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ Rust ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½ ΡΡΠ΅Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΠ³Ρ, Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠΈΠΎΠ½Π°ΡΠ½ΡΡ ΠΌΠ΅ΡΡ, Π³Π΄Π΅ Π±Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠ·ΠΊΠΎΠΏΡΠΎΡΠΈΠ»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠΎΠΊΠΈ Rust, Π² ΠΌΠΈΡΠ΅ ΠΈ ΡΠΆΠ΅ ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π² Π ΠΎΡΡΠΈΠΈ ΠΊΡΠ°ΠΉΠ½Π΅ Π½Π΅Π²Π΅Π»ΠΈΠΊΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΈΠ΄Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ»ΠΎΠΊ, ΡΡΠΎ ΡΠ·ΡΠΊ ΠΊΠ°Π½Π΅Ρ Π² Π»Π΅ΡΡ, Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΏΠ»Π°Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ Π·Π°Ρ Π²Π°Ρ ΠΌΠΈΡΠ°. Π Π·Π½Π°ΡΠΈΡ Ρ ΠΎΡΠΎΡΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Rust Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π½Π°ΠΉΡΠΈ Π²ΡΡΠΎΠΊΠΎΠΎΠΏΠ»Π°ΡΠΈΠ²Π°Π΅ΠΌΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΠΊ Π² Π½Π°ΡΠ΅ΠΉ ΡΡΡΠ°Π½Π΅, ΡΠ°ΠΊ ΠΈ Π·Π° ΡΡΠ±Π΅ΠΆΠΎΠΌ.
ΠΡΠ΅ Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ: ΠΏΡΠΎΡΠ΅ΡΡΠΈΡ Β«ΠΠ΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΒ».
ΠΡΠ°ΠΊ, Ρ ΠΎΡΠΈΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π²Π°ΡΠ΅ΠΌΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈΠ½Π½ΠΈΠΊΠ° (15 ΠΌΠ°Ρ 2016 Π³ΠΎΠ΄Π° Π΅ΠΌΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΠ»ΡΡ Π³ΠΎΠ΄) β Rust. ΠΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Mozilla, ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ: ΡΠΊΠΎΡΠΎΡΡΡ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ ΡΡΠ³ΠΎΠ½ΠΎΠΌΠΈΠΊΠ°. Π‘Π°ΠΌΠΈ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΡΠΎΠΌΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π΅ΡΠΎΡΡΠ½ΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ² C/C++. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΎΠΏΡΠΎΡΡ ΠΏΠΎΡΡΠ°Π»Π° StackOverflow, ΠΈΠΌΠ΅Π½Π½ΠΎ Rust ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π»ΡΠ±ΠΈΠΌΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΡΠ·ΡΠΊ. ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΆΠ΅ ΠΎΠ½ ΠΈΠ· ΡΠ΅Π±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ.
Rust Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠ°
ΠΠ΅ Ρ ΠΎΡΠ΅ΡΡΡ Π½ΠΈΠΊΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ°Π½ΡΠ²Π°ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π»Π΅Π΅ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΠ΅: Rust Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΎ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½ΠΎ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΡΡΡΡ ΡΠ·ΡΠΊΠ° ΠΈ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, ΠΌΠ°Π»ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ. ΠΠΎ-Π²ΡΠΎΡΡΡ , Π²ΡΡΡΠΈΡΡ Π΅Π³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ Π΄Π°Π»ΡΠΊΠΎΠΌΡ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΌΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ. Π’Π°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ IT-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π·Π΄ΡΠ°ΠΆΠ°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΌΠ°Π»Π΅ΠΉΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ·ΡΠΊΠ΅ ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡ Π² ΡΡΠΏΠΈΠΊ.
ΠΠΏΡΠΎΡΠ΅ΠΌ, Rust Π±ΡΡΡΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ (ΠΊΠ°ΠΆΠ΄ΡΠ΅ 6 Π½Π΅Π΄Π΅Π»Ρ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π½ΠΎΠ²ΡΠΉ ΡΠ΅Π»ΠΈΠ·), ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΡΡΡΡ, Π° Π½Π°ΠΉΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΡΠΆΠ΅ Π½Π΅ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΡΠ΄Π°.
ΠΠ°ΠΊ ΠΈΠ·ΡΡΠ°ΡΡ
ΠΠΎΡΡΠΈ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Rust Π²Π΅ΡΡΠΌΠ° ΠΎΠ±ΡΠΈΡΠ½ΠΎ ΠΈ Π΄ΠΎΠ±ΡΠΎΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π° ΡΠΎΠ²Π΅ΡΠΎΠΌ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ Π² IRC (Π΅ΡΡΡ ΡΡΡΡΠΊΠΈΠΉ ΡΠ°Π·Π΄Π΅Π») ΠΈ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΎΡΡΠΌ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΠ½Π΅ΠΌΠ½ΠΎΠ³Ρ ΡΡΠ°Π»ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΊΠ½ΠΈΠ³ΠΈ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠ΅. ΠΠΎΠΊΠ° ΡΡΡΠ΄Π½ΠΎ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ, Π½ΠΎ ΡΠ°ΠΊΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π΅ΡΡΡ.
ΠΠ»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΠΏΡΠΎΡΡΠ» Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ°Π΄ΠΈΡ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π°, Π½Π° GiHub ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠΉΠΌΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ RFC ΠΈ ΠΊΠΎΠΌΠΌΠΈΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠΈΡΡ Π»ΠΈΡΠ½ΠΎ ΠΈΠ»ΠΈ Ρ ΠΎΡΡ Π±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΉ ΠΏΠΎ Rust, Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ Π½Π° Π²ΡΠΎΡΡΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ Π³ΠΎΠ΄Π°. ΠΠΎΡ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡ:
ΠΡ Π° ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΠ΅ΠΌΠΈ, ΠΊΡΠΎ ΡΡΠΈΡΠ°Π΅Ρ Rust ΡΠ²ΠΎΠΈΠΌ ΠΏΡΠΈΠ·Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ ΡΠΏΡΠΎΡΠΈΡΡ Ρ Π½ΠΈΡ Π²ΡΠ΅ ΠΏΡΠ΅ΠΌΡΠ΄ΡΠΎΡΡΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΡΠ·Π°ΡΡΡΡ Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΎΡΠ°ΠΌΠΈ ΠΈ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌΠΈ Π²ΡΡΡΠ΅Ρ ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠΎΠ² ΡΠ·ΡΠΊΠ° Π² ΠΠΎΡΠΊΠ²Π΅.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΠ±Π»ΠΈΡΡΡ ΡΠΎ, ΠΎ ΡΡΠΌ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠ°Π½Π΅Π΅, Π²ΡΠ΄Π΅Π»ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠ»ΡΡΡ ΠΈ ΠΌΠΈΠ½ΡΡΡ ΡΠ·ΡΠΊΠ° Rust.
ΠΠ»ΡΡΡ:
ΠΠΈΠ½ΡΡΡ:
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΊ ΠΎΡΠ»ΠΈΡΠΈΡΠΌ, Π²ΡΠΎΠ΄Π΅ Π·Π°ΠΌΠ΅Π½Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ, Π±ΡΡΡΡΠΎ ΠΏΡΠΈΠ²ΡΠΊΠ°Π΅ΡΡ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π³Π»Π°Π·Π° ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ, ΡΡΠΊΠΈ Π½Π°Π±ΠΈΠ»ΠΈΡΡ, Rust ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π²ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠ·ΡΠΊ, ΠΏΡΠΎΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π΅Π΅ C++, Π½ΠΎ ΡΡΡΡΠΏΠ°ΡΡΠΈΠΉ ΠΏΠΎ Β«ΠΊΡΠ°ΡΠΈΠ²ΠΎΡΡΠΈΒ» ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ·ΡΠΊΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΆΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ Rust ΠΎΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠΎΠ² β ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ.
ΠΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΠΎΡΡΡ
ΠΠ° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ Rust ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½ ΡΡΠ΅Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΠ³Ρ, Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠΈΠΎΠ½Π°ΡΠ½ΡΡ ΠΌΠ΅ΡΡ, Π³Π΄Π΅ Π±Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠ·ΠΊΠΎΠΏΡΠΎΡΠΈΠ»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠΎΠΊΠΈ Rust, Π² ΠΌΠΈΡΠ΅ ΠΈ ΡΠΆΠ΅ ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π² Π ΠΎΡΡΠΈΠΈ ΠΊΡΠ°ΠΉΠ½Π΅ Π½Π΅Π²Π΅Π»ΠΈΠΊΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΈΠ΄Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ»ΠΎΠΊ, ΡΡΠΎ ΡΠ·ΡΠΊ ΠΊΠ°Π½Π΅Ρ Π² Π»Π΅ΡΡ, Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΏΠ»Π°Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ Π·Π°Ρ Π²Π°Ρ ΠΌΠΈΡΠ°. Π Π·Π½Π°ΡΠΈΡ Ρ ΠΎΡΠΎΡΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Rust Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π½Π°ΠΉΡΠΈ Π²ΡΡΠΎΠΊΠΎΠΎΠΏΠ»Π°ΡΠΈΠ²Π°Π΅ΠΌΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΠΊ Π² Π½Π°ΡΠ΅ΠΉ ΡΡΡΠ°Π½Π΅, ΡΠ°ΠΊ ΠΈ Π·Π° ΡΡΠ±Π΅ΠΆΠΎΠΌ.
ΠΡΠ΅ Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ: ΠΏΡΠΎΡΠ΅ΡΡΠΈΡ Β«ΠΠ΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΒ».
ΠΡΠ°ΡΠΊΠ°Ρ ΠΈΡΡΠΎΡΠΈΡ Rust: ΠΎΡ Ρ ΠΎΠ±Π±ΠΈ Π΄ΠΎ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π―Π ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ StackOverflow
Rust β ΡΡΠΎ ΡΠ·ΡΠΊ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»ΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΡΠ΅ΠΌ Π²Π΅ΡΠ°ΠΌ: ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΡ, ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. Π Ρ ΠΎΡΡ Rust ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΌΠΎΠ»ΠΎΠ΄ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ β Π΅Π³ΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ Π²ΡΡΠ»Π° Π² 2015 Π³ΠΎΠ΄Ρ β ΠΎΠ½ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΡΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΡΡΠΈ Π»Π΅Ρ.
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ Π±Ρ Ρ ΠΎΡΠ΅Π»ΠΈ Π·Π°Π³Π»ΡΠ½ΡΡΡ Π² ΠΏΡΠΎΡΠ»ΠΎΠ΅ ΠΈ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΡΠ·ΡΠΊΠ° Rust, ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π―Π Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅.
ΠΠΈΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ (2006β2010)
Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΈΠ· ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ·Π²Π°Π½Π° ΡΠΏΠ°ΡΡΠΈ Π±ΡΠ΄ΡΡΠ΅Π΅ ΠΎΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ΅Π±Ρ
β ΠΡΡΠΉΠ΄ΠΎΠ½ Π₯ΠΎΡ (Graydon Hoare), ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Rust
ΠΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠΈΡΠ°Ρ ΠΡΡΠΉΠ΄ΠΎΠ½Π° Π₯ΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ·Π²ΡΡΠΈΠ» Π‘ΡΠΈΠ² ΠΠ»Π°Π±Π½ΠΈΠΊ (Steve Klabnik) ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠ° Rust Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ACM Π² 2016 Π³ΠΎΠ΄Ρ (ΡΠ»Π°ΠΉΠ΄Ρ ΠΊ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»Π°ΠΉΠ΄Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΡΠ΅Π»ΠΊΠΈ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅). ΠΡΠΈ ΡΠ»ΠΎΠ²Π° Ρ ΠΎΡΠΎΡΠΎ ΠΎΡΡΠ°ΠΆΠ°ΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Rust β Π½Π΅ ΡΠ΅Π²ΠΎΠ»ΡΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ·ΡΠΊ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ½ ΠΏΡΠΎΡΡΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π±ΠΎΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΠ· Β«ΡΡΠ°ΡΡΡ Β» ΡΠ·ΡΠΊΠΎΠ² (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ C++), ΠΏΠΎΠ²ΡΡΠ°Ρ ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ.
ΠΠ°Π½ΠΈΠΌΠ°ΡΡΡ ΡΠ·ΡΠΊΠΎΠΌ, ΠΡΡΠΉΠ΄ΠΎΠ½ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°. ΠΠ½ ΠΎΡΠΌΠ΅ΡΠ°Π», ΡΡΠΎ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»ΡΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ΅ ΡΠ·ΡΠΊΠ°, Π° ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ β ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π΄Π΅Π»ΠΎ. ΠΠΎΡΡΠΎΠΌΡ Π² ΡΠ°Π½Π½Π΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Rust ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° Π±ΡΠ»ΠΈ Π½Π΅ Π΄Π»ΠΈΠ½Π½Π΅Π΅ ΠΏΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² β ΡΠ·ΡΠΊ Π±ΡΠ» Β«ΠΊΡΠ°ΡΠΊΠΈΠΌΒ» ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΊΠ°ΠΊ log, ret ΠΈ fn.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ²ΡΠΉ ΠΊΠΎΠ΄ Π½Π° Rust, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²ΠΈΠ΄Π΅Π» ΡΠ²Π΅Ρ, Π²ΡΠ³Π»ΡΠ΄Π΅Π» ΡΠ°ΠΊ:
ΠΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°Π΅Ρ Π‘ΡΠΈΠ² ΠΠ»Π°Π±Π½ΠΈΠΊ, ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΡΠ½ΡΡΠΎ: ΡΠ°ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² Β«ΡΠ΄Π»ΠΈΠ½ΠΈΠ»ΠΈΒ», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ret ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ»ΡΡ Π² return, Π° ΡΠ°ΡΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌ. ΠΠ»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ·ΡΠΊΠ° Π²ΡΠ²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ Β«ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!Β» Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
Π’Π°ΠΊΠΆΠ΅ Π·Π° Π²ΡΠ΅ΠΌΡ ΡΠ²ΠΎΠ»ΡΡΠΈΠΈ ΡΠ°ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² ΡΠ·ΡΠΊΠ° Π±ΡΠ»Π° ΡΠ±ΡΠ°Π½Π°. ΠΠΎΠ³Π΄Π° Π½Π°Π΄ ΡΠ·ΡΠΊΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π» ΠΡΡΠΉΠ΄ΠΎΠ½, Rust Π±ΡΠ» ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ obj Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π‘Π΅ΠΉΡΠ°Ρ ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ²ΠΎΠ΅ ΠΠΠ ΡΠ·ΡΠΊΠΎΠΌ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ, Π½ΠΎ Rust Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΅Π³ΠΎ ΠΏΠΎΠ½ΡΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ.
Rust ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π» Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ°. ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ·ΡΠΊΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈΡΡ ΠΈ ΡΠ΅ΠΉΡΠ°Ρ (ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π² ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅), ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π΅ΡΡΡΡ Π»Π΅Ρ Π½Π°Π·Π°Π΄ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ:
Π‘Π°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π½Π°Π΄ Rust ΠΡΡΠΉΠ΄ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π» Π½Π° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΡΠ΅ΡΡΡΠ΅Ρ Π»Π΅Ρ. ΠΠ° ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π΅ΠΌΡ ΡΠ΄Π°Π»ΠΎΡΡ Π²ΠΎΠΏΠ»ΠΎΡΠΈΡΡ Π² ΠΆΠΈΠ·Π½Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 90% Π·Π°Π΄ΡΠΌΠ°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ (ΡΠ°ΡΡΡ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΈΠΌΠ΅Π»Π° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π³ΡΡΠ±ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ). Π‘ΡΠ΅Π΄Π° Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π±ΡΠ»Π° Π·Π°Π²Π΅ΡΡΠ΅Π½Π° Π½Π° 70%. ΠΡΠ΅Π³ΠΎ Π·Π° ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π₯ΠΎΡ Π½Π°ΠΏΠΈΡΠ°Π» 38 ΡΡΡ. ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π½Π° OCaml.
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ Mozilla (2010β2012)
Π― Π½Π΅ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Ρ ΡΠ·ΡΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π³Π»Π°Π²Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ.
ΠΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· Π½Π°Π±ΠΎΡΠ° ΠΏΠΎΠ½ΡΡΠ½ΡΡ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ Β«ΡΠ°Π±ΠΎΡΠ°ΡΡΒ» Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ
β ΠΡΡΠΉΠ΄ΠΎΠ½ Π₯ΠΎΡ (Graydon Hoare), ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Rust
ΠΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ²ΠΈΠΈ ΡΠ΅ΡΡΡΠ΅Ρ Π»Π΅Ρ, ΠΡΡΠΉΠ΄ΠΎΠ½ ΡΠ΅ΡΠΈΠ» ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ Π² Mozilla. Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΡΠΎΡΠ²ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡΠΊΠ°Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΉΠΊΠΈ ΡΡΠ΅ΠΊΠ° Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ , ΡΠ΅ΠΌ C++. ΠΠΎΡΡΠΎΠΌΡ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (Π²ΠΎ Π³Π»Π°Π²Π΅ Ρ ΠΡΡΠΉΠ΄ΠΎΠ½ΠΎΠΌ) Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ Rust, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π» ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° Servo.
Π’ΠΎΠ³Π΄Π° Π΄Π²ΠΈΠΆΠΎΠΊ Mozilla Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΌΡΠ»ΡΡΠΈΡΠ΄Π΅ΡΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠΌΠ΅Π» ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΡΡ Π΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΌΠΈ Π±ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈ Π·Π°ΠΏΡΡΠΊΠ° JavaScript. Rust ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΊΠΎΠ΄ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Π½Π° ΠΌΠΈΠ½ΠΈ-Π·Π°Π΄Π°ΡΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΡΡΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
ΠΡΠΎΠΌΠ΅ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π·Π° ΡΡΠ΅Ρ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Rust ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΏΠΎΠ²ΡΡΠΈΡΡ Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. ΠΠ° ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Firefox Π±ΡΠ» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° C++ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π» 4,5 ΠΌΠ»Π½ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°. C++ β ΡΡΠΎ Β«ΡΠΎΡΠ½ΡΠΉΒ» ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠ΅Π±ΡΡΡΠΈΠΉ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΊ Π΄Π΅ΡΠ°Π»ΡΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΌΠΎΠ³Π»ΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠ°Π΄Π°ΡΠ΅ΠΉ Rust ΡΡΠ°Π»ΠΎ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Π»ΠΈΡΠ½ΠΈΡ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΠΊΡΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°.
Π 2010 Π³ΠΎΠ΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ·ΡΠΊΠ° ΡΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ OCaml Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° Rust. Π 2011 Π³ΠΎΠ΄Ρ ΠΡΡΠΉΠ΄ΠΎΠ½ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠΌΠ΅Π» ΡΡΠΏΠ΅ΡΠ½ΠΎ Β«ΡΠΎΠ±ΡΠ°ΡΡΒ» ΡΠ°ΠΌ ΡΠ΅Π±Ρ, Π° Π² 2012 ΠΊΠΎΠΌΠ°Π½Π΄Π° Rust ΠΎΠ±ΡΡΠ²ΠΈΠ»Π° ΠΎ ΡΠ΅Π»ΠΈΠ·Π΅ Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° β Π΅Π³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π±ΡΠ»Π° Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΠΉ, Π° ΡΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΈΠ»Π΄Π° ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ Π΄Π°Π»Π΅ΠΊΠ° ΠΎΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΡΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π» Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ° ΠΈ ΠΊΡΠΎΡΡ-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ.
ΠΠΎΠ΄Ρ typesystem (2012β2014)
ΠΠ°ΡΠ° ΡΠ΅Π»Π΅Π²Π°Ρ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ β Β«ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ C++Β»
Π ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΡΡΠΉΠ΄ΠΎΠ½ ΠΎΡΠΎΡΠ΅Π» ΠΎΡ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ Rust ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΠ»ΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ. ΠΠ°ΠΊ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π‘ΡΠΈΠ² ΠΠ»Π°Π±Π½ΠΈΠΊ, ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°Π»Π° Π±ΠΎΠ»Π΅Π΅ Β«ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉΒ». ΠΡΠ»Π° ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π° ΡΠ΅Π΄Π΅ΡΠ°ΡΠΈΠ²Π½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π½ΠΎΡΠΈΠΌΡΠ΅ Π² ΡΠ°Π·Π½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΡΠ²Π΅ΡΠ°Π»Π° ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ Π³ΡΡΠΏΠΏΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
ΠΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»Π° ΡΠ°ΡΡΠΈ, ΠΈ Π² Π½Π΅ΠΉ ΡΡΠ°Π»ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π»ΡΠ΄ΠΈ, ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΠΈΠ΅ΡΡ Π² ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΈΠΏΠΎΠ². ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΡΠ°Π»ΠΎΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ typesystem, ΠΈ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² ΡΠ·ΡΠΊΠ° Π²ΡΠ½ΠΎΡΠΈΠ»ΠΈΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΡΠ°Π½Π½ΠΈΡ ΡΡΠ°ΠΏΠ°Ρ Rust Π±ΡΠ» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Β«ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°Β» (GC β Garbage Collector), ΠΊΠΎΡΠΎΡΡΠΉ ΠΡΡΠΉΠ΄ΠΎΠ½ Π²Π½Π΅Π΄ΡΠΈΠ» Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΡΠΎΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΈΡΠ»ΠΈ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ², ΠΈ ΠΎΡ GC ΠΎΡΠΊΠ°Π·Π°Π»ΠΈΡΡ.
ΠΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·Π°Π»ΠΎΡΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π² Rust. ΠΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Β«ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ°Β» Π² ΡΠ·ΡΠΊΠ΅ Π±ΡΠ»ΠΎ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ:
ΠΠ΅ΡΠΈΠΎΠ΄ Ρ 2012 ΠΏΠΎ 2014 Π³ΠΎΠ΄ β ΡΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Rust Π½Π°ΡΠ°Π»ΠΎ ΠΎΠ±ΡΠ΅ΡΠ°ΡΡ ΡΠΎΡΠΌΡ. Π Π½Π΅ΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π»ΠΎΡΡ ΡΡΠΈ Π±ΠΎΠ»ΡΡΠΈΡ Β«Π»Π°Π³Π΅ΡΡΒ»: ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ C++, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ. ΠΡ ΡΠΊΡΠΏΠ΅ΡΡΠΈΠ·Π° ΠΏΠΎΠ²Π»ΠΈΡΠ»Π° Π½Π° ΡΠ·ΡΠΊ β ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΎΠ½ ΡΡΠ°Π» ΡΠΎΡΠ΅ΡΠ°ΡΡ Π² ΡΠ΅Π±Π΅ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π ΠΌΠ°ΡΡΠ΅ 2014 Π³ΠΎΠ΄Π° ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ» ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ RFC-ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π½Π°ΡΠΈΠΌΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΠ·ΡΠΊΠ΅. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΈΠ»ΠΎΡΡ ΠΏΠΎ ΠΎΠ±ΡΠ°Π·Ρ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΡ Python PEP, ΠΈ ΡΠ΅ΠΉΡΠ°Ρ Π² Π½Π΅ΠΌ ΡΠ΄Π΅Π»Π°Π½ΠΎ 3 ΡΡΡ. ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ². ΠΡΠΈΡΠ΅ΠΌ Π² RFC ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π»ΡΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π΄Π°ΠΆΠ΅ Π²Π½ΠΎΡΠΈΠΌΠΎΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ. ΠΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Rust, Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²Π½ΠΎΡΠΈΡΡ ΠΊΡΡΠΏΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π½Π΅ ΠΎΠ±ΡΡΠ΄ΠΈΠ² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ.
Π Π΅Π»ΠΈΠ· (2015)
ΠΡ Π½Π΅ Π·Π½Π°Π΅ΠΌ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ°, ΡΡΠΎ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ
Π Π½Π°ΡΠ°Π»Π΅ 2015 Π³ΠΎΠ΄Π° Π±ΡΠ»Π° Π²ΡΠΏΡΡΠ΅Π½Π° Π²Π΅ΡΡΠΈΡ Rust 1.0 Alpha. Π Π½Π΅ΠΉ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠ΄ΡΠΎ ΡΠ·ΡΠΊΠ°, ΡΠ°Π·Π²ΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π·Π°ΠΊΡΠ΅ΠΏΠΈΠ»ΠΈ Π·Π° ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ int ΠΈ uint Π½Π°Π·Π²Π°Π½ΠΈΡ isize ΠΈ usize. Π Π½Π°ΡΠ°Π»Π΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΊΠ²Π°ΡΡΠ°Π»Π° ΡΠΎΠ³ΠΎ ΠΆΠ΅ Π³ΠΎΠ΄Π° Rust 1.0 ΠΏΠ΅ΡΠ΅ΡΠ΅Π» Π² Π±Π΅ΡΡ β ΠΊ ΡΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ crates.io ΠΈΠΌΠ΅Π» 1700 ΠΊΡΡΠΉΡΠΎΠ² (ΡΡΡΡΠΊΡΡΡΠ½Π°Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ), Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠΉ ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΏΡΠ΅Π²ΡΡΠΈΠ»ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½.
Π ΠΌΠ°Π΅ 2015 Π³ΠΎΠ΄Π° ΡΠΎΡΡΠΎΡΠ»ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅Π»ΠΈΠ· β Rust 1.0. ΠΡΠΎ ΠΎΠ·Π½Π°ΠΌΠ΅Π½ΠΎΠ²Π°Π»ΠΎ Π½Π°ΡΠ°Π»ΠΎ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ. Π‘ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΠ΅ Π²Π½ΠΎΡΠΈΠΌΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Rust Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ . ΠΠ½ Π½Π°ΡΠ°Π» Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΊΠΈΡ ΡΡΠ΅ΡΠ°Ρ , ΠΊΠ°ΠΊ game dev, Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ.
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½ (ΠΌΠ°ΠΉ 2016)
ΠΡΠ»ΠΈ ΡΠ·ΡΠΊ Ρ ΠΎΡΠΎΡ Π»ΠΈΡΡ Π² ΡΠ΅ΠΌ-ΡΠΎ ΠΎΠ΄Π½ΠΎΠΌ, ΡΠΎ ΡΡΠΎ β ΠΏΡΠΎΠ²Π°Π»
Π 2015 Π³ΠΎΠ΄Ρ ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΠ° StackOverflow ΠΏΡΠΎΠ²Π΅Π»Π° ΠΎΠΏΡΠΎΡ ΡΡΠ΅Π΄ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡ ΠΏΠΎΠΏΡΠΎΡΠΈΠ»ΠΈ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ ΠΈ Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ. Π’ΠΎΠ³Π΄Π° Rust Π·Π°Π½ΡΠ» ΡΡΠ΅ΡΡΡ ΡΡΡΠΎΡΠΊΡ ΡΠ΅ΠΉΡΠΈΠ½Π³Π°. ΠΠ΄Π½Π°ΠΊΠΎ Π³ΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΠΎΠ½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠ»ΡΡ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ β 79% ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ·ΡΡΠ²ΠΈΠ»ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌ.
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ΅Π·ΠΈΠ΄Π΅Π½ΡΠΎΠ² Hacker News Π½Π°Π·Π²Π°Π» Π³Π»Π°Π²Π½ΡΠΌΠΈ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π°ΠΌΠΈ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΈ ΠΎΡΠΊΡΡΡΠΎΡΡΡ ΠΈ Π΄ΠΎΠ±ΡΠΎΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Rust-ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅Π³Π΄Π° Π³ΠΎΡΠΎΠ²ΠΎ ΠΏΠΎΠΌΠΎΡΡ Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Π―Π.
ΠΡΠΈ ΡΡΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ΅ΡΠ°ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠΈΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΈΠ·-Π·Π° Π΅Π³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΠ°ΠΊ ΡΠΊΠ°Π·Π°Π» ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Reddit: Β«ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Rust β ΡΡΠΎ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠΊΡΡ ΡΠΎ ΡΡΡΠ°Ρ ΠΎΠ²ΠΊΠΎΠΉ ΠΈ Π² Π·Π°ΡΠΈΡΠ΅; ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΡΡΠ°Π½Π½ΠΎ, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΡΠΊΠΈ, Π½Π΅ Π±ΠΎΡΡΡ ΡΠ»ΠΎΠΌΠ°ΡΡ ΡΠ΅Π±Π΅ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄ΡΒ».
Π‘ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ΅Π»ΠΈΠ·Π° ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Rust Π½Π°ΡΠ°Π»ΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½. ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ Rust Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΡΡΠ°Π»Π° Mozilla. Π§Π°ΡΡΡ Β«Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΠ΅ΠΉΒ» Firefox 45 Π΄Π»Ρ Linux Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½Ρ Π½Π° Rust, Π° Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ Firefox 47, Rust-ΠΊΠΎΠ΄ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΈ Π² Π²Π΅ΡΡΠΈΠΈ Π΄Π»Ρ Windows. ΠΡ Project Quantum, Π°Π½ΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π² ΠΎΠΊΡΡΠ±ΡΠ΅ 2016 Π³ΠΎΠ΄Π°, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠΎΡΡΠ°Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Servo.
Rust ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈ Π² Dropbox β Π½Π° ΡΡΠΎΠΌ Π―Π Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ ΡΠ΄ΡΠΎ ΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Dropbox ΡΠΎΠ·Π΄Π°Π»Π° ΡΠ²ΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Magic Pocket, Π² ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ»Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ Amazon S3. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π½Π° ΡΠ·ΡΠΊΠ΅ Go, Π½ΠΎ ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡ Π²ΡΡΠΎΠΊΠΎΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π½ΠΈΠ·ΠΊΠ°Ρ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Go. ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π±ΡΠ» ΡΠ°ΡΡΠΈΡΠ½ΠΎ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ Rust.
Π ΠΏΡΠΎΡΠ»ΠΎΠΌ Π³ΠΎΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Rust Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² JavaScript Π½Π°ΡΠ°Π»ΠΈ Π² npm. Rust ΠΏΠΎΠΌΠΎΠ³ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ Ρ 350 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² Π΄Π΅Π½Ρ. Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡ ΡΠ»ΡΠΆΠ±Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ npm ΠΡΠ»ΠΈ Π£ΠΈΠ»ΡΡΠΌΡ (Ashley Williams) ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π»Π° ΠΎΠ± ΠΎΠΏΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Rust Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ RustFest Π² Π£ΠΊΡΠ°ΠΈΠ½Π΅. ΠΠΈΠ΄Π΅ΠΎ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅.
Rust ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈ ΠΌΡ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Bitfury. ΠΠ° ΡΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π°Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ΠΎΠ² Exonum. ΠΠΏΠ΅ΡΠ²ΡΠ΅ ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ RustFest 2017, Π³Π΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅Π»ΠΈ Π²ΠΎΡΠΊΡΠΎΠΏ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡ (ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΡ Π½Π° Exonum Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π·Π΄Π΅ΡΡ).
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Rust ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ ΠΊΡΡΠ°ΡΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°ΠΌΠΈ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΡΠΌΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ Exonum ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»ΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ Ethereum (ΠΈΠ»ΠΈ Fabric). ΠΠΎΠ΄ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΊΡΡΡ ΠΈ Π»Π΅ΠΆΠΈΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° GitHub.
Rust ΡΠ°ΠΊΠΆΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. Π’Π°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΊΠ°ΠΊ Tor ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° Π½Π° Rust.
Π ΡΠ΅Π»ΠΎΠΌ, ΡΠ΅Π³ΠΎΠ΄Π½Ρ Rust Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ 105 ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ. ΠΠΎΠ»Π½ΡΠΉ ΠΈΡ ΡΠΏΠΈΡΠΎΠΊ (Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠ΅Π½Π° ΠΈ Bitfury Group) ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Friends of Rust Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅. Π ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΡΠΎΠ·Π΄Π°ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΡ Π½Π° Rust, ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ, ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ·ΡΠΊΠ° ΠΎΡΠ΅Π½Ρ ΡΠ°Π΄Ρ.
Rust β ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ ΠΈ Π΄Π΅ΡΠ·ΠΊΠΈΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΠΎΠ²ΠΎΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ C++ ΠΈ Haskell.
ΠΠ΅ΡΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΠ·ΡΠΊΠ° Rust ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π² 2010 Π³ΠΎΠ΄Ρ, ΠΈ ΠΎΠ½ ΡΡΠ°Π·Ρ Π·Π°Π½ΡΠ» ΡΡΠ΅ΡΡΡ ΡΡΡΠΎΡΠΊΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Π»ΡΠ±ΠΈΠΌΡΡ ΡΠ·ΡΠΊΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π° StackOverflow. ΠΠΎΠ΄ ΡΠΏΡΡΡΡ Rust Π²ΠΎΠ·Π³Π»Π°Π²ΠΈΠ» ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈ Π΄Π΅ΡΠΆΠ°Π»ΡΡ ΡΠ°ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎΡ ΡΠ·ΡΠΊ ΡΡΠ°Π» ΡΠ°ΠΊΠΈΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ, Π² ΡΡΠΌ Π΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π²ΠΎΠΊΡΡΠ³ Π½Π΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ².
Π ΡΡΠΌ ΠΈΠ΄Π΅Ρ ΡΠ·ΡΠΊΠ° Rust
ΠΠ²ΡΠΎΡΡ ΡΠ·ΡΠΊΠ° Π½ΡΠ°Π²ΠΈΠ»Π°ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΈ Π²ΡΠ΅ΠΌΠΎΠ³ΡΡΠ΅ΡΡΠ²ΠΎ ΡΠ·ΡΠΊΠ° C++ ΠΈ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΡ Haskell. ΠΠ½ ΠΏΠΎΡΡΠ°Π²ΠΈΠ» ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΠ±ΠΎΠΉ Π·Π°Π΄Π°ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΡΡ ΠΎΠ±Π° ΡΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΠΈ Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ ΠΎΠ½ ΡΠΎΠ±ΡΠ°Π» ΠΏΠ΅ΡΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΡΠ·ΡΠΊΠ° Rust.
Rust ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΌΡΠ»ΡΡΠΈΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ. Π‘Π΅ΠΉΡΠ°Ρ ΠΏΠΎΡΡΠ½ΠΈΠΌ, ΡΡΠΎ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ.
👉 ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π³ΠΎΡΠΎΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° β ΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π° Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Ρ Π½ΡΠΆΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ. ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΠ»Π° ΠΊ Π²Π°ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ.
👉 Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ β ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΏΠΈΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠ΅Π»ΠΎΠΌ. ΠΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ΠΈ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ. ΠΠ±ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ Π½Π° Rust β ΠΎΡ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ° Π΄ΠΎ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ . Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΆΠ΅Π»Π΅Π·Π°.
👉 ΠΡΠ»ΡΡΠΈΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ°Π»ΡΠ½ΡΠΉ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π² ΡΠ·ΡΠΊΠ΅ ΡΠΎΡΠ΅ΡΠ°ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π ΡΠ»ΡΡΠ°Π΅ Rust ΡΡΠΎ ΠΠΠ, ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΎΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠΈΡΡΠΌ, ΠΠΠ Π² Rust ΠΏΡΠΈΡΠ»ΠΎ ΠΈΠ· C++, Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ β ΠΈΠ· Haskell. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΌ Π²ΡΠ±ΠΈΡΠ°ΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΡΠΈΠ»Π΅ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ Π² ΡΠ°Π·Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈ ΠΊΠΎΠ΄
ΠΠ° ΠΎΡΠ½ΠΎΠ²Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π² Rust Π²Π·ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈΠ· C ΠΈ C++.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Β«ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!Β» Π½Π° Rust Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
fn main() <
println!(«Hello, world!»);
>
ΠΡΠ»ΠΈ Π²Ρ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ, ΡΠΎ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡΡΠΎ Π½Π°ΡΠ°ΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΈ Π½Π° Rust. ΠΡΡΠ³ΠΎΠ΅ Π΄Π΅Π»ΠΎ, ΡΡΠΎ Π² Rust Π΅ΡΡΡ ΡΠ²ΠΎΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
let x = if new_game() < 4 >
else if reload() < 3 >
else
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΠ°Π·Π±Π΅ΡΡΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ. ΠΡΠΈ ΡΠ°ΠΊΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ x Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½Π° ΡΠ΅ΡΡΡΡΠΌ, Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ new_game() Π²Π΅ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true. ΠΡΠ»ΠΈ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΠ»ΡΡΠΈΡΡΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ reload() ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ. ΠΡΠ»ΠΈ true, ΡΠΎ x ΠΏΡΠΈΠΌΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 3, Π° Π΅ΡΠ»ΠΈ ΠΈ ΡΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ β ΡΠΎ x ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π½ΡΠΌ 0.
ΠΡΡ Π² Rust Π΅ΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, Ρ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ ΡΠΎΠ²ΠΏΠ°Π»ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ ΡΠ° ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ:
ΠΠ»Π°Π²Π½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° Rust
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ Π½Π° C, Π³Π»Π°Π²Π½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° Rust ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π²Π·ΡΠ»ΠΈ ΠΈΠ· Haskell, ΠΈ Π·Π²ΡΡΠΈΡ ΠΎΠ½Π° ΡΠ°ΠΊ:
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° Rust ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π»Π°ΡΡ ΠΈ Π½Π΅ ΡΠΏΠ°Π»Π° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°, ΡΠΎ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π²Ρ ΡΠ°ΠΌΠΈ Π΅Ρ Π½Π΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅.
ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Rust ΠΏΠΎΡΡΠΈ ΡΠ°ΠΊ ΠΆΠ΅ Π½Π°Π΄ΡΠΆΠ½Ρ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Haskell. ΠΠΎΡΡΠΈ β ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Β«Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉΒ» Π±Π»ΠΎΠΊ unsafe, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π°ΡΡ Π΅ΠΌΡ ΠΏΡΡΠΌΠΎΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΎ Π² ΡΠ΅ΠΎΡΠΈΠΈ ΡΡΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠ±ΠΎΡΠΌ. ΠΠΎ Π΄Π°ΠΆΠ΅ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Rust ΡΡΠ°ΡΠ°Π΅ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΡΠ°ΠΌ ΠΈ ΠΏΠ°Π΄Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² Π±Π΅Π·Π½Π°Π΄ΡΠΆΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ .
ΠΠ»ΡΡΡ ΠΈ ΠΌΠΈΠ½ΡΡΡ ΡΠ·ΡΠΊΠ°
ΠΠΎΠ³Π΄Π° ΡΠ·ΡΠΊ ΡΠΎΠ²ΠΌΠ΅ΡΠ°Π΅Ρ Π² ΡΠ΅Π±Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ², ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ :
ΠΠΈΠ½ΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ²ΡΠ·Π°Π½Ρ ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΠ·ΡΠΊΠ°. Π’Π°ΠΊ ΠΊΠ°ΠΊ Rust ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ, ΡΠΎ ΡΠ°ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΡΠ°ΠΊ, ΡΡΠΎ ΠΊΠΎΠ΄ ΠΈΠ· ΡΡΠ°ΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ. ΠΡΡ ΠΊ ΠΌΠΈΠ½ΡΡΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ:
Π§ΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° Rust
Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Rust ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π² ΡΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ , Π³Π΄Π΅ Π½ΡΠΆΠ½Π° ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΈ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΈ ΠΎΠ±ΡΠ΅Π΅ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Rust ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ‘, Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°, Π²Π΅Π±-Π΄Π²ΠΈΠΆΠΊΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ ΡΠ°ΡΡΠ΅ΠΉ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° ΠΈ Π±ΡΠΊΠ΅Π½Π΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΡ ΡΠ°ΠΌΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, Π³Π΄Π΅ Rust Π±ΡΠ» ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Rust
Rust β Π½ΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ΅ΠΉ Mozilla. ΠΠ»Π°Π²Π½Π°Ρ ΡΠ΅Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² β ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π΄Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. ΠΠ΅ΡΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΠ·ΡΠΊΠ° Π±ΡΠ»Π° Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΡΡΠΉΠ΄ΠΎΠ½ΠΎΠΌ Π₯ΠΎΡΠΎΠΌ Π² 2006 Π³ΠΎΠ΄Ρ, Π° Π² 2009 Π³ΠΎΠ΄Ρ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»Π°ΡΡ Mozilla. Π‘ ΡΠ΅Ρ ΠΏΠΎΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠ΅ΡΠ΅ΡΠΏΠ΅Π» ΠΈ ΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° OCaml: ΠΎΠ½ Π±ΡΠ» ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½ Π½Π° Rust Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ LLVM Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ back-end.
ΠΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠΌ, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΌ Π½Π° Rust, ΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ Π²Π΅Π±-Π΄Π²ΠΈΠΆΠΎΠΊ Servo, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²Π΅Π΄Π΅ΡΡΡ Mozilla. Π 2013 Π³ΠΎΠ΄Ρ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Rust ΠΈ Servo ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»Π°ΡΡ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΡ Samsung Electronics, ΠΏΡΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΡΠ°ΡΡΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠ΄ Π΄Π²ΠΈΠΆΠΊΠ° Servo Π±ΡΠ» ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ARM Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ·ΡΠΊΠ° ΡΡΠΎΠ»Ρ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠΌΠΈ ΠΈΠ³ΡΠΎΠΊΠ°ΠΌΠΈ IT ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ°Π΄ΠΎΠ²Π°ΡΡ ΠΈ Π΄Π°Π΅Ρ Π½Π°Π΄Π΅ΠΆΠ΄Ρ Π½Π° Π΅Π³ΠΎ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅.
Π¦Π΅Π»Π΅Π²Π°Ρ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ
Π‘Π½Π°ΡΠ°Π»Π° Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π» Π½Π°ΠΏΠΈΡΠ°ΡΡ Π²Π²ΠΎΠ΄Π½ΡΡ ΡΡΠ°ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»Π° ΡΠ·ΡΠΊ Ρ ΡΠ°ΠΌΡΡ ΠΎΡΠ½ΠΎΠ², Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ°ΠΌΡΡΠΈ. Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π±Ρ ΠΎΡ Π²Π°ΡΠΈΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΡΡ ΡΠ΅Π»Π΅Π²ΡΡ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ, Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΡΠ°ΡΡΡ Ρ ΠΏΠΎΡ ΠΎΠΆΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ΠΌ Π±ΡΠ»Π° Π±Ρ Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° Π»ΡΠ΄ΡΠΌ, ΠΈΠΌΠ΅ΡΡΠΈΠΌ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎΠΉ ΠΎΠΏΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΡΠΈΠΏΠ° C++ ΠΈΠ»ΠΈ Java, ΠΈ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Π±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² Π½Π΅Π΅ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Rust, ΡΠΎ Π΅ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ.
ΠΠΎΡΡΠΎΠΌΡ Ρ ΡΠ΅ΡΠΈΠ» Π½Π΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π²Π΅ΡΠΈ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΡΠΈΠΊΠ»Ρ, ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ ΠΈ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅, ΡΡΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈΠ· ΠΊΠΎΠ΄Π°. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΌΠ°ΡΡΠ° Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½Π° ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·Π±ΠΎΡΠ° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Rust. Π ΠΈΡΠΎΠ³Π΅ ΡΡΠ°ΡΡΡ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π²ΡΡ ΠΈΠ· ΡΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠ·ΡΠΊΠ°: Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠ°ΠΌΡΡΡΡ ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ ΡΠ΅ΡΠ΅Π²Π°Ρ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΠ»Π°ΡΡ Π² Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, ΡΡΠΎ Π΄Π΅Π»Π°Π»ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅ΠΉ Π² ΡΡΠ°ΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΡΠΌ.
Π’Π΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ
ΠΠΎ Π±ΠΎΠ»ΡΡΠΎΠΌΡ ΡΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π΄Π²ΡΡ -ΡΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΡΠ°ΡΠ΅ΠΉ, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΡΡ Rust, Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΡΡΠΎΡΠ²ΡΠ΅ΠΉΡΡ ΡΡΡΡΠΊΠΎΠΉ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π½Π΅Ρ ΠΈ ΠΌΠ½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π±ΡΠ°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΡ, ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡΠ΅ ΠΏΠΎ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ·ΡΠΊΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΡΡΠ°ΡΠ΅ΠΉ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠΈ ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π° Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ.
ΠΠ°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π²ΡΠ·Π²Π°Π»ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Ρ Box ΠΈ Pointer. ΠΠΎ ΡΠ²ΠΎΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΡΡΠΎ Box, ΡΡΠΎ Pointer Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ ΡΠΌΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈΠ· C++, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΡΠ΅ΡΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠΌΠΈΠ½ Β«ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈΒ». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Owned boxes ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ»ΠΈΡΡ Π² Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, Π° Borrowed pointers Π²ΠΎ ΠΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ.
Π Π°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΡΡΡΡ
ΠΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ β ΡΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Rust, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅Ρ ΡΡΠΎΡ ΡΠ·ΡΠΊ ΠΊΠ°ΠΊ ΠΎΡ ΡΠ·ΡΠΊΠΎΠ² Ρ ΠΏΠΎΠ»Π½ΡΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ (ΡΠΈΠΏΠ° C++), ΡΠ°ΠΊ ΠΈ ΠΎΡ ΡΠ·ΡΠΊΠΎΠ² Ρ ΠΏΠΎΠ»Π½ΡΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ Π·Π° ΠΏΠ°ΠΌΡΡΡΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ GC (ΡΠΈΠΏΠ° Java). ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ, Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Rust ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ, Π³Π΄Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅, Π²Π²ΠΎΠ΄Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΈΠΏΠ°ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π·Π° ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. C Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΡΡΡΠ»ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ·ΡΠΊΠ° Π±ΡΠ΄Π΅Ρ Π·Π°ΠΌΠ΅Π½Π΅Π½ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΌ GC, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
Π’Π°ΠΊ, ΠΊΠΎΠ΄ (1) ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° Point Π½Π° ΡΡΠ΅ΠΊΠ΅ Π·Π°Π΄Π°ΡΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½. ΠΡΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° (2) Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ Π½Π΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ x, Π° Π²ΡΡ ΡΡΡΡΠΊΡΡΡΠ° ΡΠΈΠΏΠ° Point.
ΠΠ»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ: ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΡΡΠ΅, ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ let ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Rust Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠ΅ ΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ mut. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΈΠΏΠ° Point ΠΌΠΎΠ³Π»ΠΎ Π±Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ let mut x = Point
ΠΡΠ°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΌΠΈ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π°Π½Π½ΡΠ΅, ΠΈ Π·Π° ΠΏΠΎΠΏΡΡΠΊΠ°ΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΡ Β«ΠΎΠ±ΠΌΠ°Π½ΠΎΠΌΒ» ΠΏΡΠΈΡΡΠ°Π»ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ.
Π’Π°ΠΊ, Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ (1) ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π½ΠΎ Π²ΠΎΡ ΠΏΠΎΠΏΡΡΠΊΠ° (2) ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. Π Π²ΠΎΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ ΡΠ°Π½ΡΡΠ΅ΠΉ Π°Π΄ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Point ΠΈ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π½Π΅Π΅, ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ (3).
Π Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ
Π Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΠΈΠ΅ΡΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΡΡΠ΅ Π·Π°Π΄Π°ΡΠΈ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΊΡΡΠ°, ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π² Π½Π΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ Π·Π° Π΅Π΅ ΠΏΡΠ΅Π΄Π΅Π»Ρ. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ @
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ΅ΠΊΠΎΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΏΡΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π° Π½Π΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠΌΠ΅Π½Π½ΠΎ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΏΠΎΡΠ»ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° shared_ptr ΠΈΠ· ΡΠ·ΡΠΊΠ° C++.
Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ (ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ). ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ°Π·ΡΠ΅ΡΠΈΠ» ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠ½ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π² ΡΠΈΠΏ Option (1).
Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ
Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ Π²Π»Π°Π΄Π΅Π½ΠΈΡ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π°Π΄ΡΠ΅ΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ. C++ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π½Π°ΠΉΠ΄ΡΡ ΠΎΠ±ΡΠΈΠ΅ ΡΠ΅ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ Rust ΠΈ ΠΊΠ»Π°ΡΡΠΎΠΌ unique_ptr ΠΈΠ· STL.
ΠΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ (1) ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ new_p ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ p ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ new_p Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠ°Π½Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° Point, Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ p Π΄Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ. Π ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ (2) ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΡ use of moved value ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π΄Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ²Π½ΠΎΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ (1), new_p ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΊΠΎΠΏΠΈΡ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π½Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° Point, Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ p Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±Ρ ΠΊ ΡΡΡΡΠΊΡΡΡΠ΅ Point ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ clone, ΡΡΡΡΠΊΡΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°ΡΡΠΈΠ±ΡΡΠ° #[deriving(Clone)].
ΠΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ
ΠΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ β ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ Π² Π»ΡΠ±ΠΎΠΌ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ: ΡΡΠ΅ΠΊΠ΅, Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΈΠ»ΠΈ Ρ ΠΈΠΏΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π°, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠ»Π΅Π½ Π»ΡΠ±ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ Π‘ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, Π½Π΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ° ΠΈ Π½Π΅ ΠΏΡΠΈΠ²Π½ΠΎΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΡ ΡΠ°ΡΡ ΠΎΠ΄ΠΎΠ². Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΎΡΠ»ΠΈΡΠΈΠ΅ΠΌ ΠΎΡ Π‘ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΡΠ²Π»ΡΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌΡΠ΅ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄Π»Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ &
ΠΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° Point Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ (1) Π½Π° ΡΡΠ΅ΠΊΠ΅ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π±ΡΠ» ΡΠΎΡ ΡΠ°Π½Π΅Π½ Π² on_the_stack. ΠΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ:
Π’ΠΈΠΏΡ, ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ ΠΎΡ ΡΡΠ΅ΠΊΠΎΠ²ΡΡ , ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΡΡ ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π²Π·ΡΡΠΈΡ Π°Π΄ΡΠ΅ΡΠ°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ (1), Π΅ΡΠ»ΠΈ ΡΠΈΠΏ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π ΡΠ΅ΠΏΠ΅ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΠ½ΡΡΠΎΠ»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ½Π°Ρ ΠΈ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΡΡΠΎΡΠ²ΡΠ°ΡΡΡ ΡΠ΅ΠΌΠ°. ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Ρ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡ Π² ΡΡΠ°ΡΡΠ΅ Rust Borrowed Pointers Tutorial ΠΈ Lifetime Notation.
Π Π°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ
ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ, Π°Π΄ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ (Dereferencing pointers). ΠΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΠΏΠΎΠ»ΡΠΌ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ Ρ Rust Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ: Β«ΠΠ°ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, Π°Π΄ΡΠ΅ΡΡΠ΅ΠΌΡΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΊ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΌΡ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ?Β» ΠΡΠ²Π΅Ρ Π½Π° Π΄Π°Π½Π½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΠΈ ΠΏΠΎΠ½Π°ΡΠ°Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π΅ΡΠΊΡΡΠ°ΠΆΠΈΠ²Π°ΡΡΠΈΠΉ: Π½ΠΈΠΊΠ°ΠΊ. ΠΡΠ»ΠΈ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ Π½Π°Π΄ Π½ΠΈΠΌ, ΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΡΡΠ΅Π΄ΡΡΠ² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅Ρ ΠΈ Π±ΡΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΡΠ°Π·Π½ΡΡ ΠΊΡΡΠ°Ρ ΠΈ ΠΏΠΎΠ΄ΡΠΈΠ½ΡΡΡΡΡ ΡΠ°Π·Π½ΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ, Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π³ΡΠ°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΡΡΡΠ΄Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ. ΠΠΎΡΡΠΎΠΌΡ, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΈ ΡΠ΅ΠΌ ΠΈΠ½ΡΠΌ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΡΡΠ°ΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ.
ΠΠ°Π΄Π°ΡΠΈ
ΠΡΠΎΡΠ°Ρ ΠΊΠ»ΡΡΠ΅Π²Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Rust β Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΠΏΠ»Π°Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Rust Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Erlang Ρ Π΅Π³ΠΎ ΠΌΠΎΠ΄Π΅Π»ΡΡ Π°ΠΊΡΠΎΡΠΎΠ² ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΠΈ Limbo Ρ Π΅Π³ΠΎ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ: Ρ ΠΎΡΠ΅Ρ Π»ΠΈ ΠΎΠ½ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΏΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. Π ΠΏΡΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π·Π°Π΄Π°Ρ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΎΠ΄ΠΈΠ½-ΠΏΠΈΡΠ°ΡΠ΅Π»Ρ-ΠΌΠ½ΠΎΠ³ΠΎ-ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ Π·Π°Π΄Π°Ρ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ±ΡΠ°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ.
ΠΠ»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ: do-ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ, ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ do-ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Rust Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ each, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ (1) Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΡΡΠ½ΠΊΡΠΈΡ op.
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ each, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ do-ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ (1), ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ Π½Π° ΡΠΊΡΠ°Π½ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°, Π½Π΅ Π·Π°Π±ΡΠ²Π°Ρ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π² Π»ΡΠΌΠ±Π΄Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π½Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ (2) Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ:
Π’Π°ΠΊ ΠΊΠ°ΠΊ do-ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°Ρ Π°ΡΠΎΠΌ, ΡΠΎ Π·Π°ΠΏΠΈΡΡ Π½ΠΈΠΆΠ΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π° Π·Π°ΠΏΠΈΡΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ do-ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°.
ΠΠ°ΠΏΡΡΠΊ Π·Π°Π΄Π°ΡΠΈ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π·Π°Π΄Π°ΡΡ Π² Rust ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ. ΠΠΎΠ΄, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΉΡΡ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ, ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠ΅Π½ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ std::task, Π° ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΡΡΠ°ΡΡΠ° Π·Π°Π΄Π°ΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ spawn ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.
Π€ΡΠ½ΠΊΡΠΈΡ spawn ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π΅Π³ΠΎ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ Π·Π°Π΄Π°ΡΠΈ (Π½Π΅ ΡΡΠΎΠΈΡ Π·Π°Π±ΡΠ²Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π·Π°Π΄Π°ΡΠΈ Π² Rust ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΏΠΎΠ²Π΅ΡΡ Π·Π΅Π»Π΅Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²). ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΡΡ Π·Π°Π΄Π°ΡΡ, Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠ΄, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ get_task() ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ task. Π‘ ΡΡΠ΅ΡΠΎΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π·Π°Π΄Π°ΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ, Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ 3 ΡΠΏΠΎΡΠΎΠ±Π° Π·Π°ΠΏΡΡΡΠΈΡΡ Π·Π°Π΄Π°ΡΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π°Π΄ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ (1), ΡΠΎΠ·Π΄Π°Π² Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ Β«Π½Π° ΠΌΠ΅ΡΡΠ΅Β» (2) ΠΈΠ»ΠΈ, ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π΅ΡΠ½ΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΠ·ΡΠΊΠ°, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ do-ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ (3).
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ
ΠΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅
Π‘Π°ΠΌΡΠΌ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ std::comm. ΠΠΎΠ΄ ΠΈΠ· std::comm Ρ ΠΎΡΠΎΡΠΎ ΠΎΡΠ»Π°ΠΆΠ΅Π½, Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ Π·Π°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΡΠ½ΠΎΠ²ΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ std::comm ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΈ, ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡ Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΈ ΠΏΠΎΡΡΠΎΠ². ΠΠΎΡΠΎΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ²ΡΠ·ΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π° ΠΊΠ°Π½Π°Π» β Π΄Π»Ρ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΊΠ»Π°ΡΡ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Send, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠΈ.
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ recv(), ΠΊΠΎΡΠΎΡΠ°Ρ Π»ΠΈΠ±ΠΎ Π²Π΅ΡΠ½Π΅Ρ Π΄Π°Π½Π½ΡΠ΅, Π»ΠΈΠ±ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ Π΄ΠΎ ΠΈΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ. ΠΠ»ΡΠ΄Ρ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅, Π·Π°ΠΊΡΠ°Π΄ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ½ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΌΡΡΠ»Π° Π² ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Π½Π΅Ρ. Π’Π°ΠΊ ΡΡΠΎ ΡΡΠΎΠΈΡ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΡΠΌ Π²Π΅ΡΠ°ΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ.
ΠΠ΅ΡΠ²ΠΎΠ΅, Π½Π° ΡΡΠΎ ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π°Π΄ΡΠ΅ΡΡΠ΅ΠΌΡΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ, Π° ΡΡΠ½ΠΊΡΠΈΡ from_fn() (1) ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ². Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΌ, ΡΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π·Π°ΠΏΡΠΎΡΠ° (2) ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° (3) ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π΄Π²Π° ΠΏΠΎΡΠΎΠΊΠ°. ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ recv() Π΄Π°Π½Π½ΡΠ΅ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠ° (4), Π° ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΠ°ΠΊΠΎΠ²ΡΡ ΠΏΠΎΡΠΎΠΊ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ Π΄ΠΎ ΠΈΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ. ΠΠ»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ send() (5), ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠ°Ρ Π½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΌΡ, Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΌΡ ΠΏΠΎΡΠΎΠΊΡ; Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΡΡΠΏΠΈΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅: ΠΎΠ½ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ (6) ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ send(), ΠΎΡΠ½ΠΎΡΡΡΠ΅ΠΉΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΌΡ ΠΏΠΎΡΡΡ. Π ΡΠ°ΠΌΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ, ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ (7) ΠΈΠ· ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΡΠΎΠΊ server_chan, server_port. Π ΡΠΈΠ»Ρ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΠΎΡΠΎΠΊΠ°, Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ° Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΏΠΎΡΠΎΠΊ, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· ΠΏΠ°ΡΡ client_chan, client_port.
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°
Π₯ΠΎΡΡ ΠΏΠΎΡΠΎΠΊ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΆΠ΅Π»Π°ΡΡΠΈΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Β«ΠΎΠ΄ΠΈΠ½-ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ-ΠΌΠ½ΠΎΠ³ΠΎ-ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Π΅ΠΉΒ».
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΡ Π΅ΠΌΡ Β«ΠΎΠ΄ΠΈΠ½-ΡΠΈΡΠ°ΡΠ΅Π»Ρ-ΠΎΠ΄ΠΈΠ½-ΠΏΠΈΡΠ°ΡΠ΅Π»ΡΒ», Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ (2) ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ (3) ΠΏΠΎΡΠΎΠΊΠΈ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ Π·Π°Π΄Π°ΡΡ (3). ΠΠΎΠ³ΠΈΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°: ΡΡΠΈΡΠ°ΡΡ (5) Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π°, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ (9), Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΡΠΊΡΠ°Π½ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² print_hello (5) Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΏΠΎΡΠΎΠΊ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠΈΠΏ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ°, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π² (7) Π΅Π³ΠΎ ΠΊ SharedChan Π²ΠΌΠ΅ΡΡΠΎ Chan, ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΏΠΎΡΡΠ° (8) ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° clone(). ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΡΡΠΎΠΌ Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°: ΠΌΠ΅ΡΠΎΠ΄ send() ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΡ (9) Ρ ΡΠΎΠΉ Π»ΠΈΡΡ ΡΠ°Π·Π½ΠΈΡΠ΅ΠΉ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π·Π°Π΄Π°Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
ΠΡΠΎΠΌΠ΅ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, Π΄Π°Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½ΡΡ Π·Π°Π΄Π°Π΅ΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈΠ±ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ΅ΡΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ Π±ΠΈΠ½Π°ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ (Π΄Π°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠΏΠΈΡΠ°Π½ Π½ΠΈΠΆΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠ΅ΡΠ΅ΡΡΠ»ΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²Β»), Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ (1). ΠΠΎ ΡΠ²ΠΎΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ Π² Rust ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΠ· ΡΠ·ΡΠΊΠ° C ΠΈΠ»ΠΈ ΡΠΈΠΏ Variant, Π² ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠΎΡΡΠΈ Π²ΠΎ Π²ΡΠ΅Ρ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ΅ΡΠ΅ΡΡΠ»ΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
Π ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π°Π΄ΡΠ΅ΡΡΠ΅ΠΌΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ, ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ flatpipes. ΠΠ°Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΡΠ±ΡΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ flatpipes ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. Π‘ΡΡΡΠΊΡΡΡΠ°, ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ flatpipes, Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠΉ (1) ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠΉ (2). Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ flatpipes (3) ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ΅ΠΌ (4) ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° (5) ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠ°Π½Π°Π»Π° ΠΈ ΠΏΠΎΡΡΠ°. ΠΠ»Π°Π²Π½ΡΠΌ ΠΆΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ΠΌ flatpipes ΠΎΡ ΠΏΠΎΡΠΎΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π° ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Π΅ ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Π΅. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ°ΠΊΠΎΠΌΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ, Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ flatpipes, ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, Π²ΠΎΠ·ΡΠ°ΡΡΠ°ΡΡ, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΠ΅ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΡΡ.
ΠΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π΄Π²Π° ΠΏΠΎΡΠΎΠΊΠ°: ΠΎΠ΄ΠΈΠ½ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, Π²ΡΠΎΡΠΎΠΉ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ ΠΏΡΠΈΠ²Π½ΠΎΡΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΎΡΡΡΠΈΠΌΠΎΠΉ ΠΏΠΎΠ»ΡΠ·Ρ Π΄Π° ΠΈ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΌΡΡΠΎΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ΄. Π ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΠΌΠΎΠ΄ΡΠ»Ρ extra::comm, ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠ΅ΠΉ Π½Π°Π΄ std::comm ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π² ΡΠ΅Π±Π΅ DuplexStream, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°. Π‘Π°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ, Π΅ΡΠ»ΠΈ Π·Π°Π³Π»ΡΠ½ΡΡΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ DuplexStream, ΡΡΠ°Π½Π΅Ρ ΡΡΠ½ΠΎ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΡΠ΄ΠΎΠ±Π½Π°Ρ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠ° Π½Π°Π΄ ΠΏΠ°ΡΠΎΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ DuplexStream ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ (1) Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΏΠ°ΡΠ° ΠΈΠ· Π΄Π²ΡΡ Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΎΠ±Π° ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠ±ΡΠ΅ΠΊΡ server Π·Π°Ρ Π²Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ (2) ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ (3) ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² Π·Π°Π΄Π°ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π° ΠΎΠ±ΡΠ΅ΠΊΡ client β Π² Π·Π°Π΄Π°ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (4,5). ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ Ρ DuplexStream Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΠΎΠ΄ΡΠ»Ρ Arc
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Ρ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΠΊΠ»Π°ΡΡΡ Send, ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, Π½ΠΎ Π΅ΡΠ΅ ΠΈ ΠΊ ΠΊΠ»Π°ΡΡΡ Freeze, ΡΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ Π±Ρ ΡΠΎ Π½ΠΈ Π±ΡΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΠ»Ρ Π²Π½ΡΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° T (ΡΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² Rust Π½ΠΎΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ deeply immutable objects).
ΠΡΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, Π½ΠΎ ΠΎΠ½ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ΅Π½ Π΄Π»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Arc, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠΌ ΠΈΠ· ΡΠ°Π·Π½ΡΡ Π·Π°Π΄Π°Ρ. Π’Π°ΠΊ, Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΎΠ±Π΅ΡΠ½ΡΡΠΎΠ³ΠΎ Π² Arc (1), Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ»ΠΎΠ½ Arc ΠΎΠ±Π΅ΡΡΠΊΠΈ (2), ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΊΠ°ΠΊ ΠΈΠ· Π½ΠΎΠ²ΠΎΠΉ (3), ΡΠ°ΠΊ ΠΈ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ (4) Π·Π°Π΄Π°Ρ.
R/W Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌ
ΠΠΎΠ΄ΡΠ»Ρ RWArc Π²ΡΠ·ΡΠ²Π°Π΅Ρ Ρ ΠΌΠ΅Π½Ρ Π΄Π²ΠΎΡΠΊΠΈΠ΅ ΡΠΌΠΎΡΠΈΠΈ. Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ RWArc ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΠΎΠΊΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΈ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ βΠΌΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ΄ΠΈΠ½ ΠΏΠΈΡΠ°ΡΠ΅Π»Ρβ, ΡΡΠΎ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, Ρ ΠΎΡΠΎΡΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½Π°. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΡΠΈΡΠ΅ΠΌ Π½Π΅ RO Π΄ΠΎΡΡΡΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΎΠΏΠΈΡΠ°Π½ ΡΡΡΡ ΡΠ°Π½Π΅Π΅, Π° RW Π΄ΠΎΡΡΡΠΏ, ΡΡΠ΅Π²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Ρ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ Rust ΠΊΠ°ΠΊ ΡΠ°Π· ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΡΠΈΡΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠΈΡΠ½ΠΎ Π΄Π»Ρ ΡΠ΅Π±Ρ Ρ ΠΏΡΠΈΡΠ΅Π» ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ Π²ΡΠ²ΠΎΠ΄Ρ: ΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ Π·Π½Π°ΡΡ Π½Π°Π΄ΠΎ, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π±Π΅Π· ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π΅ ΡΡΠΎΠΈΡ.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ (1) ΠΌΠ°ΡΡΠΈΠ², ΠΎΠ±Π΅ΡΠ½ΡΡΡΠΉ Π² RWArc, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ΅ΠΌΡ ΠΊ Π½Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊΠ°ΠΊ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ (4), ΡΠ°ΠΊ ΠΈ Π½Π° Π·Π°ΠΏΠΈΡΡ (6). ΠΠ°ΡΠ΄ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°Π±ΠΎΡΡ Ρ RWArc ΠΎΡ Π²ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠΉ Π² ΡΡΠ½ΠΊΡΠΈΡΡ read() (3) ΠΈ write() (5) Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. Π§ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ Π΄Π°Π½Π½ΡΡ , ΠΎΠ±Π΅ΡΠ½ΡΡΡΡ Π² RWArc, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΡ . Π, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠΏΠΈΡ (2) ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½Π΅ΠΌΡ ΠΈΠ· Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π» ΡΡΠ°Π½Π΅Ρ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ.
ΠΠ°ΠΊ ΡΠ°ΠΊΠΎΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ?
ΠΠ°, ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ·Π½Π°Π΅ΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠ΄ΡΠ»ΠΈ Arc ΠΈ RWArc ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π² Rust. ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΎΠ½ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ Π² Rust Π² ΡΠ΅Π»ΠΎΠΌ, ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌ ΡΠ°Π±ΠΎΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ. ΠΠ΅ ΡΠ²Π»ΡΡΡΡ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΌ ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, Ρ ΠΌΠΎΠ³Ρ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΈΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΠΎΠΌ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ΅ΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π ΡΠΎΡΡΠ°Π²Π΅ ΡΠ·ΡΠΊΠ° Rust ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ unsafe, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Ρ ΠΏΠ°ΠΌΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ, Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ malloc, free, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π΄ΡΠ΅ΡΠ½ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ Π² Rust Π·Π°ΡΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ΅ΡΡ ΠΊΠΎΠ΄, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΉΡΡ ΠΊ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ Β«COMPLETELY UNSAFEΒ» ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ Π½Π°ΠΏΡΡΠΌΡΡ.
ΠΠΌΠ΅ΡΡΠΎ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
Π₯ΠΎΡΡ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ·ΡΠΊ Rust Π½Π΅ ΠΏΡΠΈΠ³ΠΎΠ΄Π΅Π½ Π΄Π»Ρ ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΎΠ½ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΠΎΠΌ. ΠΡΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Rust ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΡ ΡΠ°ΠΊΠΈΠΌ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠ°ΠΌ-Π΄ΠΈΠ½ΠΎΠ·Π°Π²ΡΠ°ΠΌ, ΠΊΠ°ΠΊ C ΠΈ C++, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π² ΠΎΠ±Π»Π°ΡΡΡΡ , ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΠΊΡΠ°ΠΉΠ½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Ρ ΠΎΡΠ΅Π½Ρ Π½Π° ΡΡΠΎ Π½Π°Π΄Π΅ΡΡΡ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΡΠ°ΡΡΠΈ, ΡΠΎ ΡΡΠΈΡΠ°ΡΡ Π΅Π΅ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΠΎΠΉ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π΅Π»ΡΠ·Ρ: Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ·ΡΠΊΠ° Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΠΏΡΠ΅ΡΠ΅ΡΠΏΠΈΡ Π΅ΡΠ΅ ΡΡΠ΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π°, Π²ΠΎ-Π²ΡΠΎΡΡΡ , Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ ΡΡΠ΅ΡΠ΅ΠΉ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠ·ΡΠΊΠ° β ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΠ΅ΡΠ΅Π²ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ΄Π΅Ρ Π² Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎ Π½Π΅ΠΉ Π½Π°ΠΏΠΈΡΡ.