ΠΠ»Ρ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ΅Π½ rust ΡΠ·ΡΠΊ
Rust ΠΎΡΠ΅Π½Ρ Π»ΡΠ±ΡΡ, Π½ΠΎ ΡΡΠΎ Π² Π½ΡΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ?
ΠΠ²ΡΠΎΡΠΈΠ·ΡΠΉΡΠ΅ΡΡ
Rust ΠΎΡΠ΅Π½Ρ Π»ΡΠ±ΡΡ, Π½ΠΎ ΡΡΠΎ Π² Π½ΡΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ?
Rust ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΌΡΠΌ Π»ΡΠ±ΠΈΠΌΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΈ StackOverflow ΡΠ΅ΡΡΡ Π»Π΅Ρ ΠΏΠΎΠ΄ΡΡΠ΄. Π ΡΡΠΌ Π΅Π³ΠΎ ΡΠ΅ΠΊΡΠ΅Ρ? ΠΠΎΡΠΎΡΠΊΠΈΠΉ ΠΎΡΠ²Π΅Ρ β Rust ΠΈΠ·Π±Π°Π²Π»Π΅Π½ ΠΎΡ Π±ΠΎΠ»Π΅Π²ΡΡ ΡΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Rust ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΈ Π΅Π³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ.
ΠΠ°ΡΠ»Π΅Π΄Π½ΠΈΠΊ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ²
Π‘ΠΏΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΡΡ Π΅ΡΠ΅ Π΄Π΅ΡΡΡΠΈΠ»Π΅ΡΠΈΡ, Π½ΠΎ ΡΡΡΠ΄Π½ΠΎ ΡΠΏΠΎΡΠΈΡΡ ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ².
Π Π°Π·Π²ΠΈΡΠΈΠ΅ ΡΠ°ΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ², ΠΊΠ°ΠΊ TypeScript ΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ°ΠΊΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΊΠ°ΠΊ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² Π² Python, ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π»ΡΠ΄ΠΈ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π»ΠΈΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ, ΡΡΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΠΊΠΎΠ³Π½ΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠΈ ΠΈ Π½Π΅Π΄ΠΎΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅.
ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ Π²ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ NULL.
ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π»ΡΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ Π²ΡΠΎΡΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΡΠΈΠΏ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠ°ΠΊ Haskell ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Rust ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΏΠ° optional, ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ case None.
ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ: TypeError: Cannot read property βfooβ of null Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π΅ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΡΠ°Π½ΠΈΡΡ Π΅Ρ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΅Π΅ ΡΠ²ΠΈΠ΄ΠΈΡ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Π·Π½Π°Π΅ΠΌ ΠΌΡ Π΅Π³ΠΎ ΠΈΠΌΡ ΠΈΠ»ΠΈ Π½Π΅Ρ; Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ Π·Π°Π±ΡΠ»ΠΈ ΡΠ»ΡΡΠ°ΠΉ None Π² match ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡΡΠ°Π»ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΄Π°Π» Π±Ρ ΠΎΡΠΈΠ±ΠΊΡ.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π² Rust Π΄Π΅Π»Π°Π΅Ρ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΌΠ΅ΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ·ΡΠΊΠΈ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π»ΠΎΠΆΠ°ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, ΡΡΠ΅Π±ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡΡΠΎ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΠΈ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Ρ. ΠΡΡΠ³ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠ° Π²ΠΎ Π²ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
Π₯ΠΎΡΡ ΡΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ Π² Π½Π°ΡΠ°Π»Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ½ΠΈΠΆΠ°Π΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ , Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ². Rust ΡΡΠΈΡΡΡ Π½Π° ΠΎΠ±ΠΎΠΈΡ ΡΡΠΈΡ ΡΡΠΈΠ»ΡΡ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΈΠΌΠ΅Π»ΠΈ ΡΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΈΠΏΡ Π²Π½ΡΡΡΠΈ ΡΠ΅Π» ΡΡΠ½ΠΊΡΠΈΠΉ. Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Rust ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ Π΄Π²Π°ΠΆΠ΄Ρ, 2 ΠΈ 1, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ val ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΠΏ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ ΠΊΠ°ΠΊ 32-ΡΠ°Π·ΡΡΠ΄Π½ΡΠ΅ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π° ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ.
ΠΠ°ΡΠ»Π΅Π΄Π½ΠΈΠΊ ΡΠ·ΡΠΊΠΎΠ² ΡΠΎ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ°
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ.
Rust ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ Π² ΡΡΠ΅ΠΊΠ΅ ΠΈΠ»ΠΈ Π² ΠΊΡΡΠ΅ ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠΎ ΠΏΠ°ΠΌΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠΈΡΠ΅Π½Π°. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ. Tilde β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Rust Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠ΅ Skylight, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ ΠΈΠΌ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Ρ 5 ΠΠ Π΄ΠΎ 50 ΠΠ, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ HTTP Π½Π° Java Π² Rust. Π’Π°ΠΊΠ°Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π·Π½Π°ΡΠΈΠΌΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π»Π°ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ ΠΌΠ΅Π½ΡΡΡ ΡΠ΅Π½Ρ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ°ΠΌΡΡΡ.
ΠΠ΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΡ Rust Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ Π·Π°ΠΌΠ΅Π½ΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°ΡΡΠΈ Π±ΡΡΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° Rust Π±Π΅Π· ΡΠΈΡΠΊΠΎΠ² Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΡΠΈΡΡΡΠΈΡ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ ΡΠ·ΡΠΊΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Π΄Π°ΠΆΠ΅ Π±ΡΠ»ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½Ρ Π² Rust Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΠ±Π»Π°Π΄Π°Ρ ΠΏΡΡΠΌΡΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠ°ΠΌΡΡΠΈ, Rust ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΈ bare-metal ΡΠΈΡΡΠ΅ΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΄ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ². ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Rust, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΡΠΈΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΡΠ΅Π΄Π°Ρ .
ΠΠ°ΡΠ»Π΅Π΄Π½ΠΈΠΊ ΡΠ·ΡΠΊΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π»ΡΠ΄Π΅ΠΉ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Rust ΠΊΠ°ΠΊ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΡΠ°ΠΊΠΈΠΌ ΡΠ·ΡΠΊΠ°ΠΌ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊ Π‘ΠΈ ΠΈΠ»ΠΈ C++. Π‘Π°ΠΌΠΎΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Rust β ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΉ. ΠΡΠΎ ΡΠ°ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½Π°Ρ Π·Π° ΡΠΎ, ΡΡΠΎΠ±Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ²Π°Π»ΠΈ Π΄Π°Π½Π½ΡΠ΅, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΡΡΡΠ»Π°ΡΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΡΡΡΠ°Π½ΠΈΡΡ ΡΠ΅Π»ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, Π²ΡΠ·Π²Π°Π½Π½ΡΡ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Rust Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈ Π²ΡΠ΅ ΡΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΏΠΎΠ³ΡΡΠΆΠ°ΡΡΡ Π² ΠΌΠ΅Π»ΡΡΠ°ΠΉΡΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ. Rust ΡΡΡΠ΅ΠΌΠΈΡΡΡ ΠΈΠΌΠ΅ΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ Ρ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΡΡ β Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎΠ»Ρ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Ρ, ΠΊΠ°ΠΊ ΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ ΡΡΠΊΠΎΠΏΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄. Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ, ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Rust, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΠΊΡΠ°ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅ΠΊΡΠΎΡΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π΅ΡΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΈΡΠ΅Π»:
Π ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠ³Π΄Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ Rust Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ Rust. ΠΡΠΎ Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²Ρ ΡΠ°ΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠΎΠ΄ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½. ΠΡΠΎΡ ΠΊΠΎΠ΄ Π·Π°ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ Π² Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ Π²ΠΈΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Ρ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ Rust Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΠ±Π΄ΡΠΌΠ°Π½Π½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ ΡΠ°Π·ΠΌΡΡΠ»Π΅Π½ΠΈΠΉ ΠΈ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠ°ΠΊ ΠΈ Π² Π»ΡΠ±ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ Π½Π΅ΡΠ΅ΡΠ΅ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ. Π‘Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° β Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ²Π΅ΡΡΠΈ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ±ΠΎΠ΅Π² ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠ·-Π·Π° Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
Π―Π·ΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π²Π΅ΡΠ½ΠΎ. Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠΊΠ° ΡΠ»ΡΠΆΠ±Ρ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Ρ ΠΎΡΡΡ Π·Π½Π°ΡΡ, ΡΡΠΎ ΠΈΡ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ Π±Π°Π·Π° ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ³ΠΎΠ΄Π½Π° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΎΠ±ΠΎΠ·ΡΠΈΠΌΠΎΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ. Rust ΠΏΡΠΈΠ·Π½Π°Π΅Ρ ΡΡΠΎ ΠΈ ΠΏΡΠΈΠ½ΡΠ» ΡΠΎΠ·Π½Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΡΠΊΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΡΠ°ΡΡΠΈΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ; ΡΡΠΎ ΡΠ·ΡΠΊ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ Π½Π° Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠ΅ 40 Π»Π΅Ρ.
ΠΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° Rust
Rust Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ·ΡΠΊΠ° ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ; ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ rustup ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Rust ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠΌΠΈ. Rust ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Ρ Cargo β ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ, Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ², ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΠ΅ΡΡΡ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΠΎΠΊΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΎ. crates.io β ΡΡΠΎ ΡΠ°ΠΉΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Rust. ΠΡΠ±Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Π°Ρ Π² crates.io Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° docs.rs.
ΠΡΠΎΠΌΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΠΌΠΌΡΡΠ½ΠΈΡΠΈ Rust ΡΠΎΠ·Π΄Π°Π»ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ΅Π΄ΡΡΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ΅Π½ΡΠΌΠ°ΡΠΊΠΈΠ½Π³, Π°Π½Π°Π»ΠΈΠ· ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ²ΠΎΠΉΡΡΠ² β Π²ΡΠ΅ ΡΡΠΎ Π»Π΅Π³ΠΊΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ . ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π»ΠΈΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² Clippy, Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ rustfmt. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° IDE Ρ ΠΎΡΠΎΡΠ° ΠΈ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π΄Π½Π΅ΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ.
Rust ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΊΠΎΠ΅, Π³ΠΎΡΡΠ΅ΠΏΡΠΈΠΈΠΌΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΈ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠΌΠΎΡΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠ°Ρ, ΡΠΎΡΡΠΌ, ΡΠ°Π±ΡΠ΅Π΄Π΄ΠΈΡ Rust ΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, Stack Overflow. Π£ Rust Π΅ΡΡΡ ΠΊΠΎΠ΄Π΅ΠΊΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ±Π»ΡΠ΄Π°Π΅ΡΡΡ ΠΏΠΎΡΡΡΡΠ°ΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΠΎΠ΄Π΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΡΠ°Π»Ρ ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡ ΠΊ ΡΠ΅Π±Π΅.
Π ΠΎΡΡΠ»Π°ΠΉΠ½Π΅ Rust ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΉ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠΈΡΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ RustConf, Rust Belt Rust, RustFest, Rust Latam, RustCon Asia ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
ΠΠ΅ Π²ΡΡ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ
Π‘ΠΈΠ»ΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΎΠ² Rust ΠΈ Π°ΠΊΡΠ΅Π½Ρ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ β Π²ΡΠ΅ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ β ΠΎΠ·Π½Π°ΡΠ°ΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ°ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΌ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², Π½Π΅ ΠΏΡΠΈΠ²ΡΠΊΡΠΈΡ ΠΊ ΡΠ°ΠΊΠΎΠΌΡ ΡΠ°ΠΌΠΎΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΠΌΡ ΡΠ·ΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Rust ΠΏΠΎΡΡΠ°ΡΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ½ΡΡΠ½Ρ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ°ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ»ΡΡΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΊΡΠΎ-ΡΠΎ ΠΆΠ°Π»ΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΎΠ½ Β«Π±ΠΎΡΠ΅ΡΡΡ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΉΒ». Π₯ΠΎΡΡ ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΠ±Π΅ΡΠΊΡΡΠ°ΠΆΠΈΠ²Π°ΡΡ, Π²Π°ΠΆΠ½ΠΎ ΠΏΡΠΈΠ·Π½Π°ΡΡ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π²ΡΡΠ²Π»Π΅Π½Π½ΡΡ ΠΌΠ΅ΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠΎΠ³Π»ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠΌ.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΡΡΡΠΎΠΊΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΈΠΌΡ, Π·Π°ΡΠ΅ΠΌ Π±Π΅ΡΠ΅ΠΌ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΡΠΈ Π±Π°ΠΉΡΠ° ΠΈΠΌΠ΅Π½ΠΈ. ΠΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΡΠΎΠΊΡ, ΠΎΡΠΈΡΡΠΈΠ² Π΅Π΅. Π’Π΅ΠΏΠ΅ΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΈΡ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π½Π°Ρ:
Π ΡΡΠ°ΡΡΡΡ, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π½Π°Ρ ΠΊΠΎΠ΄ ΠΈ ΠΈΠ·ΠΎ Π²ΡΠ΅Ρ ΡΠΈΠ» ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΡΠΎΡΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠ°.
ΠΡΠΎΡΠΎΡΠΈΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Rust ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΠΈΠ·-Π·Π° Π΅Π³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡΠΈΡΠΎΠ΄Ρ ΠΈ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Rust ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠΊΡΡΡΠΈΡ 100% ΡΡΠ»ΠΎΠ²ΠΈΠΉ. ΠΡΠ°ΠΉΠ½ΠΈΠ΅ ΡΠ»ΡΡΠ°ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Ρ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π΅ΡΠ΅ Π½Π΅ Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΡΠ°ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ. ΠΠ° ΡΠ°Π½Π½ΠΈΡ ΡΡΠ°Π΄ΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈΠ΅ ΡΠ»ΡΡΠ°ΠΈ ΡΠ°ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΡΠ°Π½ΠΈΡΡ, Π²ΡΠ·Π²Π°Π² ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΌ ΡΡΠ°ΠΏΠ΅. ΠΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΎΠ½ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π² ΡΠ°ΠΊΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , ΠΊΠ°ΠΊ Ruby, Π³Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ°ΡΡΠΎ ΠΏΡΠΎΠ±ΡΡΡ ΠΊΠΎΠ΄ Π² REPL, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡΡ Π΅Π³ΠΎ Π² ΠΏΡΠΎΡΠΎΡΠΈΠΏ, Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΡΠ»ΡΡΠ°ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ.
Rust Π²ΡΠ΅ Π΅ΡΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ, Π° ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΅ΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ. ΠΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ»ΠΎΠ΄ΠΎΡΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠ²Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΎΠ±Π»Π°ΡΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ Π½Π°ΡΠΊ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ Rust Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Rust, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ regex, ΡΠ²Π»ΡΡΡΡΡ Π»ΡΡΡΠΈΠΌΠΈ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ Π½Π° Π»ΡΠ±ΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
Π₯ΠΎΡΡ Rust ΡΠ²Π΅ΡΠ΄ΠΎ ΠΏΡΠΈΠ²Π΅ΡΠΆΠ΅Π½ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, ΡΡΠΎ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠ·ΡΠΊ Π΄ΠΎΡΠ°Π±ΠΎΡΠ°Π½. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ΅ΡΠ°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΡΠ·ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π»Π΅Π³ΡΠΈΠ»ΠΈ Π±Ρ Π΅Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ Π±Ρ Π΅Π΅ Π²ΡΡΠ°Π·ΠΈΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Rust Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΡΡΡΡΠ΅ΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ΅Ρ Π»Π΅Ρ, Π½ΠΎ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° async/await ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π½Π΅ ΡΠ°ΠΊ Π΄Π°Π²Π½ΠΎ.
ΠΠ±Π·ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Rust
Rust β Π½ΠΎΠ²ΡΠΉ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΉ Mozilla. Π―Π·ΡΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΠΉ ΠΈ ΠΌΡΠ»ΡΡΠΈΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ°Π»ΡΠ½ΡΠΉ, ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π‘/Π‘++, ΡΡΠΎ ΡΠΆΠ΅ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄Π°ΠΆΠ΅ ΠΏΡΠ΅ΡΠ΅Π½Π΄Π΅Π½ΡΠΎΠ² Π½Π° ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΡ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ. ΠΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ D ΠΠ°Π»ΡΡΠ΅ΡΠ° ΠΡΠ°ΠΉΡΠ° ΠΈΠ»ΠΈ Go ΠΎΡ Google.
Π Rust ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΠΈΡΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅, ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ΅, ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΎΠ΅ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Ρ.Π΅. ΠΏΠΎΡΡΠΈ Π²Π΅ΡΡ ΡΠΏΠ΅ΠΊΡΡ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
Π² ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌ.
Π― Π½Π΅ ΡΡΠ°Π²Π»Ρ ΡΠ΅Π»ΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ (ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΎΠ½Π° Π²Π΅ΡΡΠΌΠ° ΡΠΊΡΠ΄Π½Π°Ρ ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, Ρ.ΠΊ. ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΈΠ·Π° ΡΠ·ΡΠΊΠ° Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ), Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Ρ ΠΎΡΠ΅ΡΡΡ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΠΈΡΠΈ ΡΠ·ΡΠΊΠ°. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΎΠ±ΡΠ°Π½Π° ΠΊΠ°ΠΊ ΠΈΠ· ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΊ ΠΈ ΠΈΠ· ΠΊΡΠ°ΠΉΠ½Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ ΡΠ·ΡΠΊΠ° Π½Π° ΠΏΡΠΎΡΡΠΎΡΠ°Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°.
ΠΠ΅ΡΠ²ΠΎΠ΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ·ΡΠΊΠ° ΡΡΡΠΎΠΈΡΡΡ Π² ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠΈ-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ ΡΡΠΈΠ»Π΅ (ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ°Π΄ΠΎΠ²Π°ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠΆΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡ Π΄Π΅-ΡΠ°ΠΊΡΠΎ). ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π²ΡΠ΅ΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π‘/Π‘++ ΡΡΡΠ΅Π½Ρ.
Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ Hello World Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΡΠΈΠΌΠ΅Ρ ΡΡΡΡ ΠΏΠΎΡΠ»ΠΎΠΆΠ½Π΅Π΅ β ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΡΡΠ΅ΡΠ° ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π°:
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ Π² Β«ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌΒ» ΡΡΠΈΠ»Π΅ (ΡΠ°ΠΊΠΎΠΉ ΡΡΠΈΠ»Ρ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΌ Β«int fac(int n)Β»). ΠΠΈΠ΄ΠΈΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ² (ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ let), ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° while (Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Go). ΠΡΠ΅ ΡΡΠ°Π·Ρ Π±ΡΠΎΡΠ°Π΅ΡΡΡ Π² Π³Π»Π°Π·Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ². Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ Rust Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π»Π΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π²ΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠΈΠΌΠΈ, ΠΈ, ΡΠΊΠ°ΠΆΡ ΡΠ΅ΡΡΠ½ΠΎ, ΠΌΠ½Π΅ ΡΡΠΎ Π½ΡΠ°Π²ΠΈΡΡΡ.
ΠΠ΅Π»ΠΊΠΈΠ΅, Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
Rust, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Go, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΡΡΠΊΡΡΡΠ½ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ (Ρ
ΠΎΡΡ, ΠΏΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π°Π²ΡΠΎΡΠΎΠ², ΡΠ·ΡΠΊΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°Π»ΠΈΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΎ Π²Π»ΠΈΡΠ½ΠΈΠ΅ ΠΈΡ
ΠΎΠ±ΡΠΈΡ
ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠΎΠ² β Alef, Limbo ΠΈ Ρ.Π΄.). Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΡΡΡΠΊΡΡΡΠ½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ? ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π²Π°Ρ Π² ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΠ°ΠΉΠ»Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΡΡΡΠΊΡΡΡΠ° (ΠΈΠ»ΠΈ, Π² ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Rust, Β«Π·Π°ΠΏΠΈΡΡΒ»)
type point =
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΊΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΡΠΈΠΏΠ°ΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Β«pointΒ». ΠΠ°ΡΠ΅ΠΌ, Π³Π΄Π΅-Π½ΠΈΠ±ΡΠ΄Ρ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΊΠ°ΠΊΡΡ-Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΡΡΠ³ΡΡ ΡΡΡΡΠΊΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
type MySuperPoint =
ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ° point.
Π ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠΎΠΌΡ, Π½ΠΎΠΌΠΈΠ½Π°ΡΠΈΠ²Π½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, ΠΏΡΠΈΠ½ΡΡΠ°Ρ Π² Π‘, Π‘++,C# ΠΈ Java ΡΠ°ΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ. ΠΡΠΈ Π½ΠΎΠΌΠΈΠ½Π°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° β ΡΡΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ.
Π‘ΡΡΡΠΊΡΡΡΡ Π² Rust Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Β«Π·Π°ΠΏΠΈΡΠΈΒ» (record). Π’Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠΈ β ΡΡΠΎ ΡΠ΅ ΠΆΠ΅ Π·Π°ΠΏΠΈΡΠΈ, Π½ΠΎ Ρ Π±Π΅Π·ΡΠΌΡΠ½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ. ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ°, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π·Π°ΠΏΠΈΡΠΈ, Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ.
ΠΠΌΠ΅ΡΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ° β Π² ΡΠ΅ΠΌ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ, Π° Π² ΡΠ΅ΠΌ-ΡΠΎ β ΡΠΈΠΏΡ std::vector ΠΈΠ· stl. ΠΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, Π° Π½Π΅ ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΠΊΠ°ΠΊ Π² Π‘/Π‘++
ΠΠ΅ΠΊΡΠΎΡ, ΡΠ΅ΠΌ Π½ΠΈ ΠΌΠ΅Π½Π΅Π΅ β Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ , Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π²Π΅ΠΊΡΠΎΡΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ.
ΠΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ. ΠΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π²ΠΏΠΎΠ»Π½Π΅ Π»ΠΎΠ³ΠΈΡΠ΅Π½, Π±Π΅Π· Π½Π°Π³ΡΠΎΠΌΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ Β«templateΒ» ΠΈΠ· Π‘++. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ .
Π―Π·ΡΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ΅Π³ΠΈ. ΠΡΠΎ Π½Π΅ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ union ΠΈΠ· Π‘ΠΈ, Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ»Π΅ΠΌ β ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° (ΡΠΎ Π΅ΡΡΡ Π½Π΅ΡΡΠΎ ΠΎΠ±ΡΠ΅Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΌ). ΠΠ»ΠΈ, Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΎΡΠΈΠΈ β Π°Π»Π³Π΅Π±ΡΠ°ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ .
Π ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅Π³ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ:
Π Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Β«ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡΒ» β ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ°, ΠΈΠΌΠ΅ΡΡΠ°Ρ ΡΠ²ΠΎΠΉ Β«ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΒ».
ΠΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ°, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° Β«ΡΠΏΠΈΡΠΎΠΊΒ»:
Π’Π΅Π³ΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ.
Π‘ΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ (pattern matching)
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ ΠΌΠ°ΡΡΠΈΠ½Π³ ΠΊΠ°ΠΊ ΡΠ»ΡΡΡΠ΅Π½Π½ΡΠΉ switch. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ alt, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π° Π·Π°ΡΠ΅ΠΌ Π² ΡΠ΅Π»Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° β ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ Ρ ΠΏΠ°ΡΡΠ΅ΡΠ½Π°ΠΌΠΈ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Β«ΠΏΠ°ΡΡΠ΅ΡΠΎΠ½ΠΎΠ²Β» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ (ΠΊΠ°ΠΊ Π² Π‘ΠΈ), Π½ΠΎ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ β ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΡΠ΅ΠΆΠΈ, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ, ΡΠΈΠΏΡ, ΡΠΈΠΌΠ²ΠΎΠ»Ρ-Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΠΈ (placeholders, ‘_’). ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° when, ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΡΠ°Π·Ρ Π·Π° ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠΌ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ½Π³Π° ΡΠΈΠΏΠΎΠ². Π’Π°ΠΊΠΎΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½ΡΠ½ΡΠΉ ΡΠΈΠΏ any, ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ. ΠΡΠΎΠΌΠ΅ ΠΎΠ±ΡΡΠ½ΡΡ Β«ΡΠΈΡΠ½ΡΡ Β» ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, Π² Rust ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Β«ΡΠΌΠ½ΡΠ΅Β» ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠΎΠΌ ΡΡΡΠ»ΠΎΠΊ β ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ (Shared boxes) ΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ (Unique boxes). ΠΠ½ΠΈ Π² ΡΠ΅ΠΌ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ shared_ptr ΠΈ unique_ptr ΠΈΠ· Π‘++. ΠΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ: @ Π΄Π»Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΡ ΠΈ
Π΄Π»Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ . ΠΠ»Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ β ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅:
ΠΏΠΎΡΠ»Π΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ x Π΄Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ.
ΠΠ°ΠΌΡΠΊΠ°Π½ΠΈΡ, ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ
Π‘ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π Rust ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° β ΡΠΎ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ²ΠΎΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
1. ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ lambda ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ .
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ make_plus_function, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Β«xΒ» ΡΠΈΠΏΠ° int ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΠΏΠ° Β«int->intΒ» (Π·Π΄Π΅ΡΡ lambda β ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ). Π ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΡΠ° ΡΠ°ΠΌΠ°Ρ ΡΡΠ½ΡΠΈΡ. ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ±ΠΈΠ²Π°Π΅Ρ Ρ ΡΠΎΠ»ΠΊΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Β«returnΒ», Π²ΠΏΡΠΎΡΠ΅ΠΌ, Π΄Π»Ρ Π€Π ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ Π΄Π΅Π»ΠΎ.
2. ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ block ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° β Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡ Π½Π΅ΡΡΠΎ, ΠΏΠΎΡ ΠΎΠΆΠ΅Π΅ Π½Π° Π±Π»ΠΎΠΊ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ, Π½Π° Π²Ρ ΠΎΠ΄ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠ΄Π°Π΅ΡΡΡ Π±Π»ΠΎΠΊ β ΠΏΠΎ ΡΡΡΠΈ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΠΏΠ° Β«int->intΒ», ΠΈ Π²Π΅ΠΊΡΠΎΡ ΡΠΈΠΏΠ° int (ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ Π²Π΅ΠΊΡΠΎΡΠΎΠ² Π΄Π°Π»Π΅Π΅). Π‘Π°ΠΌ Β«Π±Π»ΠΎΠΊΒ» Π² Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ Π·Π°ΠΏΠΈΡΡΠ°Π²Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° <|x| x + 1 >. ΠΠΈΡΠ½ΠΎ ΠΌΠ½Π΅ Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ°Π²ΡΡΡΡ Π»ΡΠΌΠ±Π΄Ρ Π² C#, ΡΠΈΠΌΠ²ΠΎΠ» | ΡΠΏΠΎΡΠ½ΠΎ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΠΠ (ΠΊΠΎΡΠΎΡΠΎΠ΅, ΠΊΡΡΠ°ΡΠΈ, Π² Rust ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΈ Π²ΡΠ΅ ΡΡΠ°ΡΡΠ΅ Π΄ΠΎΠ±Π½ΡΠ΅ ΡΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ).
3. Π§Π°ΡΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ β ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΡΠ΅ΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ bind ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»-Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ «_»:
Π§ΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅, ΡΠΊΠ°ΠΆΡ ΡΡΠ°Π·Ρ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π° ΠΎΠ±ΡΡΠ½ΠΎΠΌ Π‘ΠΈ ΠΏΡΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΉ ΠΎΠ±Π΅ΡΡΠΊΠΈ, ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ°ΠΊ:
const char* daynum (int i) < const char *s =<"mo", "tu", "we", "do", "fr", "sa", "su">; return s[i]; >
ΠΠΎ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΡΡΠΈΠ»Ρ, Π° Π½Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΠΉ (ΠΊΡΡΠ°ΡΠΈ, ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π΅ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²)
ΠΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ: ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ add Ρ Π΄Π²ΡΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ int, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ int. ΠΠ°Π»Π΅Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ single_param_fn, ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ int ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ int. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ bind ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ Π΄Π²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° add4 ΠΈ add5, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ add, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΠΈΡΠ½ΠΎ Π·Π°Π΄Π°Π½Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
4. Π§ΠΈΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ
Π§ΠΈΡΡΡΠ΅ (pure) ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ
ΡΡΡΠ΅ΠΊΡΠΎΠ² (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π½Π΅ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π΄ΡΡΠ³ΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΡΠΎΠΌΠ΅ ΡΠΈΡΡΡΡ
). Π’Π°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ΄ΡΠ»ΡΡΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ pure.
ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ β ΡΡΠΎ ΡΠΈΡΡΡΠ΅ (pure) ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠ΅ ΡΠΈΠΏ bool. Π’Π°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ typestate (ΡΠΌ. Π΄Π°Π»ΡΡΠ΅), ΡΠΎ Π΅ΡΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ
ΠΠ»Π°Π½ΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΈΡΠ°, Π½ΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ. Π Rust ΠΎΠ½Π° ΠΏΠΎΠΊΠ° Π½Π° ΡΡΠ°Π΄ΠΈΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΠ½ΠΎΠΌΡ printf, Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅Π΅ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π²ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΡΠ²Π»ΡΡΡΡΡ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ). Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΠΏΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌ ΠΊΡΠ°ΠΉΠ½Π΅ ΠΌΠ°Π»ΠΎ, Π΄Π° ΠΈ ΡΠ°ΠΌΠΈ ΠΎΠ½ΠΈ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² ΡΡΠ°Π΄ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π½ΠΎ Π΅ΡΡΡ Π½Π°Π΄Π΅ΠΆΠ΄Π° ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΡΠΎ-ΡΠΎ ΡΠΈΠΏΠ° ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Nemerle.
ΠΡΡΠ°ΡΠΈ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ Nemerle, ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° # ΡΡΠΈΡΠ°Ρ ΠΎΡΠ΅Π½Ρ Π³ΡΠ°ΠΌΠΎΡΠ½ΡΠΌ: ΠΌΠ°ΠΊΡΠΎΡ β ΡΡΠΎ ΡΡΡΠ½ΠΎΡΡΡ, ΠΎΡΠ΅Π½Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΠ°ΡΡΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈ Ρ ΡΡΠΈΡΠ°Ρ Π²Π°ΠΆΠ½ΡΠΌ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²Π·Π³Π»ΡΠ΄Π° Π²ΠΈΠ΄Π΅ΡΡ, Π³Π΄Π΅ Π² ΠΊΠΎΠ΄Π΅ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π° Π³Π΄Π΅ β ΠΌΠ°ΠΊΡΠΎΡΡ.
ΠΡΡΠΈΠ±ΡΡΡ
ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, ΠΏΠΎΡ ΠΎΠΆΠ°Ρ Π½Π° Π°ΡΡΠΈΠ±ΡΡΡ C# (ΠΈ Π΄Π°ΠΆΠ΅ ΡΠΎ ΡΡ ΠΎΠΆΠΈΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ). ΠΠ° ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ. ΠΠ°ΠΊ ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡ, Π°ΡΡΠΈΠ±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΊ ΡΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ΠΈ Π°Π½Π½ΠΎΡΠΈΡΡΡΡ,
ΠΡΠΈΠ΄ΡΠΌΠ°Π½ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π°ΡΡΠΈΠ±ΡΡΠΎΠ² β ΡΠ° ΠΆΠ΅ ΡΡΡΠΎΠΊΠ°, Π½ΠΎ Ρ ΡΠΎΡΠΊΠΎΠΉ Ρ Π·Π°ΠΏΡΡΠΎΠΉ Π² ΠΊΠΎΠ½ΡΠ΅, Π°Π½Π½ΠΎΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. Π’ΠΎ Π΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΌ ΡΠΈΠ³ΡΡΠ½ΡΠΌ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌ, ΠΎΡ Π²Π°ΡΡΠ²Π°ΡΡΠΈΠΌ ΡΠ°ΠΊΠΎΠΉ Π°ΡΡΠΈΠ±ΡΡ.
ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ
ΠΠΎΠΆΠ°Π»ΡΠΉ, ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±Π»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ
ΡΠ°ΡΡΠ΅ΠΉ ΡΠ·ΡΠΊΠ°. ΠΡΠΈ ΡΡΠΎΠΌ Π² tutorial Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π΅ ΠΎΠΏΠΈΡΠ°Π½Π° Π²ΠΎΠΎΠ±ΡΠ΅:)
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° Rust ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Β«Π΄Π΅ΡΠ΅Π²Π° Π·Π°Π΄Π°ΡΒ». ΠΠ°ΠΆΠ΄Π°Ρ Π·Π°Π΄Π°ΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Π²Ρ
ΠΎΠ΄Π°, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΡΠ΅ΠΊ, ΡΡΠ΅Π΄ΡΡΠ²Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ β ΠΊΠ°Π½Π°Π»Ρ Π΄Π»Ρ ΠΈΡΡ
ΠΎΠ΄ΡΡΠ΅ΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈ ΠΏΠΎΡΡΡ Π΄Π»Ρ Π²Ρ
ΠΎΠ΄ΡΡΠ΅ΠΉ, ΠΈ Π²Π»Π°Π΄Π΅Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΡΡΠ΅.
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°Π΄Π°Ρ Rust ΠΌΠΎΠ³ΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ°Π΄Π°ΡΠΈ Rust Β«Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠ΅Β»: ΠΊΠ°ΠΆΠ΄Π°Ρ Π·Π°Π΄Π°ΡΠ° ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΠΠ‘, ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΡΡΡΡΠ΅Π΅ ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΠ‘ (ΡΡΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΈΠΌΠ΅ΡΡΡΡ Π² Π²ΠΈΠ΄Ρ Π²ΡΠ΅-ΠΆΠ΅ Β«ΠΏΠΎΡΠΎΠΊΠΈΒ»).
ΠΠ°Π΄Π°ΡΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°ΠΏΡΡΠΊ Π·Π°Π΄Π°ΡΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ spawn. ΠΠ°ΠΆΠ΄Π°Ρ Π·Π°Π΄Π°ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΊΠ°Π½Π°Π»Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ
ΠΎΠ½Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΈΠ½ΡΠΎΡΠ°ΡΠΈΡ Π΄ΡΡΠ³ΠΈΠΌ Π·Π°Π΄Π°ΡΠ°ΠΌ. ΠΠ°Π½Π°Π» β ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½Π½ΡΠΉ ΡΠΈΠΏ chan, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ
ΠΊΠ°Π½Π°Π»Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, chan β ΠΊΠ°Π½Π°Π» Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΡ
Π±Π°ΠΉΡΠΎΠ².
ΠΠ»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π² ΠΊΠ°Π½Π°Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ send, ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°Π½Π°Π», Π° Π²ΡΠΎΡΡΠΌ β Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ Π±ΡΡΠ΅Ρ ΠΊΠ°Π½Π°Π»Π°.
ΠΠ»Ρ ΠΏΡΠΈΠ΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎΡΡΡ. ΠΠΎΡΡ β ΡΡΠΎ ΡΠ°Π±Π»ΠΎΠ½Π½ΡΠΉ ΡΠΈΠΏ port, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΡΡΠ°: port β ΠΏΠΎΡΡ Π΄Π»Ρ ΠΏΡΠΈΠ΅ΠΌΠ° Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΡ
Π±Π°ΠΉΡΠΎΠ².
ΠΠ»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΏΠΎΡΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ recv, Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΡ, Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ β Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΏΠΎΡΡΠ°. Π§ΡΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ, Ρ.Π΅. Π΅ΡΠ»ΠΈ ΠΏΠΎΡΡ ΠΏΡΡΡ, Π·Π°Π΄Π°ΡΠ° ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π΄ΡΡΠ³Π°Ρ Π·Π°Π΄Π°ΡΠ° Π½Π΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡ Π½Π° ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΠΏΠΎΡΡΠΎΠΌ ΠΊΠ°Π½Π°Π» Π΄Π°Π½Π½ΡΠ΅.
Π‘Π²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Π½Π°Π»ΠΎΠ² Ρ ΠΏΠΎΡΡΠ°ΠΌΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ β ΠΏΡΡΠ΅ΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ°Π½Π°Π»Π° ΠΏΠΎΡΡΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° chan:
let reqport = port();
let reqchan = chan(reqport);
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΠΎΡΡΡ, Π½ΠΎ Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ β ΠΎΠ΄ΠΈΠ½ ΠΊΠ°Π½Π°Π» Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΡΡΠ°ΠΌ.
Typestate
ΠΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Π½Π° ΡΡΡΡΠΊΠΈΠΉ ΠΏΠΎΠ½ΡΡΠΈΡ Β«typestateΒ» Ρ ΡΠ°ΠΊ ΠΈ Π½Π΅ Π½Π°ΡΠ΅Π», ΠΏΠΎΡΡΠΎΠΌΡ Π±ΡΠ΄Ρ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΡΠΎ Β«ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠΈΠΏΠΎΠ²Β». Π‘ΡΡΡ ΡΡΠΎΠΉ ΡΠΈΡΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΡΠΎΠΌΠ΅ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠΈΠΏΠΎΠ², ΠΏΡΠΈΠ½ΡΡΠΎΠ³ΠΎ Π² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
Π ΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π·Π½Π°ΠΊΠΎΠΌΡ Π²ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ β ΠΏΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Β«ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±Π΅Π· ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΒ». ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ Π½ΠΈ ΡΠ°Π·Ρ Π½Π΅ Π±ΡΠ»ΠΎ Π·Π°ΠΏΠΈΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ, ΠΈ Π²ΡΠ΄Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. Π Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ ΡΡΠ° ΠΈΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ: Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΅ΡΡΡ Π½Π°Π±ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΈ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ β Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ° Π»ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π½Π°Π΄ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π² ΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΠΆΠ½ΠΎ, ΡΡΠΎ ΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° Β«ΡΠ°ΠΉΠ»Β», ΡΠΎ Ρ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Β«Π·Π°ΠΊΡΡΡΒ» ΠΈ Β«ΠΎΡΠΊΡΡΡΒ». Π ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°, Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π·Π°ΠΊΡΡΡ. Π ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π±ΡΠΎΡΠ°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ. Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΡΠΈΠΏΠΎΠ² ΠΌΠΎΠ³Π»Π° Π±Ρ Π²ΡΡΠ²ΠΈΡΡ ΡΠ°ΠΊΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ β ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ Π»ΡΠ±ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ, ΠΎΠ½ ΠΌΠΎΠ³ Π±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Β«ReadΒ», Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Β«ΡΠ°ΠΉΠ» ΠΎΡΠΊΡΡΡΒ», Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΄ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Β«OpenΒ», ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΡΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
Π Rust ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Β«ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡΒ» β ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠ΅ ΡΠΈΠΏ bool. Π’Π°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Ρ ΡΠ΅Π»ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ.
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ (constraints) β ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ check.
ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ ΠΌΠΎΠ³ΡΡ Β«Π½Π°Π²Π΅ΡΠΈΠ²Π°ΡΡΡΡΒ» Π½Π° Π²Ρ ΠΎΠ΄Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°ΠΊΠΈΠΌ Π²ΠΎΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ:
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎ typestate ΠΊΡΠ°ΠΉΠ½Π΅ ΠΌΠ°Π»ΠΎ, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΠΏΠΎΠΊΠ° Π½Π΅ΠΏΠΎΠ½ΡΡΠ½Ρ, Π½ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ.
ΠΠ° ΡΡΠΎΠΌ Π²ΡΠ΅. ΠΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Ρ Π²ΡΠ΅-ΠΆΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΠ» ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ, Π½ΠΎ ΡΡΠ°ΡΡΡ ΠΈ ΡΠ°ΠΊ ΡΠ°Π·Π΄ΡΠ»Π°ΡΡ. ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ ΡΠΎΠ±ΡΠ°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Rust ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ ΡΠ·ΡΠΊΠ°.
ΠΠ°ΡΠ΅ΠΌ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ Rust?
Rust β ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΠΊΠΈ Π±ΡΡΡΡΠΎ, ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΡΠ°Π½ΡΠ΅Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΡΡΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ. ΠΠ½ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Mozilla ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΠΎΠ·ΡΠ΅Π²Π°ΡΠ΅Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ β Servo.
ΠΡΠ½ΠΊΡΡ ΡΠΎΠΏΡΠΈΠΊΠΎΡΠ½ΠΎΠ²Π΅Π½ΠΈΡ
ΠΠ°Π½Π½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠΊΠ°Π·ΠΊΠΎΠΉ, ΠΈΠ±ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π½Π°ΠΌ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π²ΡΠ΅Π³Π΄Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠΎΡΠΎΡΡΡΡ ΠΈ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΡΡ. Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ β Π‘++, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΡΡΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ° Π²Π½Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΊ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Π»ΠΈΠ±ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠΈΡΠ΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ Π΅ΡΡΡ Haskell, ΡΡΠ°ΠΊΠΈΠΉ ΡΠ·ΡΠΊ-ΠΊΡΠ΅ΠΏΠΎΡΡΡ (ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Β«ΡΠ°Π· ΠΎΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, Π·Π½Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΒ»), Ρ ΠΎΡΡ ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡΠΈΠΉ ΠΏΠΎΡ Π²Π°ΡΡΠ°ΡΡΡΡ ΡΠΊΠΎΡΠΎΡΡΡΡ. ΠΠ΄Π΅-ΡΠΎ ΠΏΠΎΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ Π±Π°Π»Π°Π½ΡΠΈΡΡΡΡ Java, Python, C# ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ (Π² ΡΠΈΠ»Ρ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡΡΠΈ) ΡΠ·ΡΠΊΠΈ. Rust ΠΆΠ΅ Π΄Π»Ρ ΠΌΠ΅Π½Ρ Π²ΡΡΡΡΠΏΠ°Π΅Ρ ΡΠ΄Π°ΡΠ½ΡΠΌ ΡΠΊΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π»ΡΡΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² Π‘++ ΠΈ Haskell, ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΎΡ ΡΠ°Π½ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΠ².
Π§Π΅ΡΠ΅Π· ΡΠ΅ΡΠ½ΠΈΠΈ ΠΊ Π·Π²ΡΠ·Π΄Π°ΠΌ
ΠΡΡ ΠΌΠ°Π³ΠΈΡ Rust ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π·Π½Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΎ ΡΠΎΠΌ, ΠΊΡΠΎ Π²Π»Π°Π΄Π΅Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΡΡ (owner), ΠΊΡΠΎ Π»ΠΈΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ΄Π°Π»ΠΆΠΈΠ²Π°Π΅Ρ Π΅Ρ (mutable borrow), Π° ΠΊΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΡΡΠ» ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ (immutable borrow). ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½Π° Π‘++ ΠΈΠ»ΠΈ Java, ΠΡ Π²ΡΡ ΡΠ°Π²Π½ΠΎ Π΄Π΅ΡΠΆΠΈΡΠ΅ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΡΡΡΡ ΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅. Π Rust ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΠ·ΡΠΊΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΠ°ΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Ρ Π±Π΅ΡΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠ»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΡΠ΅ΠΌ ΠΌΡ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ. ΠΠΎΠΏΡΡΠ°ΡΡΡ ΠΏΡΠΎΠΉΡΠΈΡΡ ΠΏΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π·Π°Π½Π΅ΡΡΠΈ ΠΠ°Ρ Π² ΡΡΡΠΏΠΎΡ ΠΏΡΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ:
1. ΠΠ΅Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π·Π°ΡΠΎ Π΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ (traits).
2. Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π½Π΅Π·Π°ΡΠΈΡΡΠ½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ (unsafe <>). ΠΠΌΠ΅ΡΡΠΎ Π½ΠΈΡ
Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
3. ΠΡΠ»ΠΈ Ρ ΠΠ°Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΡΠΎ-ΡΠΎ (immutable borrow = &Object), ΡΠΎ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ° ΡΡΡΠ»ΠΊΠ° ΠΆΠΈΠ²Π°.
4. ΠΡΠ»ΠΈ Ρ ΠΠ°Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ ΡΡΡΠ»ΠΊΠ° (mutable borrow = &mut Object), ΡΠΎ Π½ΠΈΠΊΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΡΠ°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΠΎΠΊΠ° ΡΡΡΠ»ΠΊΠ° ΠΆΠΈΠ²Π°.
5. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ·ΡΠΊΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ Mac ΠΈ *nix, ΡΠ°ΠΊ ΡΡΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ΄ Windows Π½ΡΠΆΠ½Π° GNU ΡΡΠ΅Π΄Π°.
Π£ Rust ΠΎΡΠ΅Π½Ρ Π²Π΅ΡΡΠ»ΠΎΠ΅ ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ, ΠΠ°ΠΌ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄ΡΡ ΡΠ°Π΄Ρ Π½Π° ΠΊΠ°Π½Π°Π»Π΅ IRC ΠΈ Π² Reddit. Π£ΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠ°, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ Π½Π° GitHub. ΠΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡΡ ΡΠ·ΡΠΊ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΠ³Ρ ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ. ΠΡΡΡ Π·Π°ΡΠ°ΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. Π ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ°ΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π° Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°Ρ . Rust ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π»ΡΠ±ΡΡ Π·Π°Π΄Π°Ρ!
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½Ρ, ΠΏΠΎΠΆΠ°Π»ΡΠΉ, ΡΠ΅ΡΡΡΠ·Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ·ΡΠΊΠ° β ΡΡΠΎ Π΅Π³ΠΎ Π±ΡΡΠ½ΠΎΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅. ΠΡ Π²Π΅ΡΡΠΈΠΈ ΠΊ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΏΠΎΡΠΎΠΉ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΡΠΌΡΡΠ»ΠΈΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ, ΠΏΠΎΠ΄ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡ ΠΏΠΎΠ΄ Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ°. Π’Π°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΏΡΠΎΠ΄Π»ΠΈΡΡΡ Π΅ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²ΡΠ΅ΠΌΡ Π² ΡΡΠΎΠΌ Π³ΠΎΠ΄Ρ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ Rust-1.0. Π ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΡΡΠ½Π°Π» Rust ‘n Stuffs Π² Π΅ΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ±ΡΠΈΠΊΠ΅ This Week in Rust ΠΎΠΏΠΎΠ²Π΅ΡΠ°Π΅Ρ Π½Π°Ρ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΡ ΠΈ Π³ΠΎΡΠΎΠ²ΡΡΠΈΡ ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ , ΠΎ Π½ΠΎΠ²ΡΡ ΡΡΠ°ΡΡΡΡ ΠΈ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ .
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΠΎ ΠΌΠ½Π΅
Π‘ΠΊΠΎΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΆΠ΅ 2 Π³ΠΎΠ΄Π°, ΠΊΠ°ΠΊ Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ» Π½Π° Rust, ΠΎΡΡΠ°Π²ΠΈΠ² ΠΏΠΎΠ·Π°Π΄ΠΈ Boo, Dart, Haskell ΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π‘++. ΠΠ΅ΡΠ²ΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Π±ΡΠ»Π° ΠΈΠ³ΡΠ°, ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΡΠΈΠ» ΠΎΡΠ»ΠΎΠΆΠΈΡΡ Π΄ΠΎ Π²ΡΡ ΠΎΠ΄Π° ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ·ΡΠΊΠ°. Π‘Π΅ΠΉΡΠ°Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π΄ rust-compress ΠΈ ΡΠ²ΠΎΠΈΠΌ ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΎΡΠΎΠΌ Π΄Π°Π½Π½ΡΡ . ΠΠ΅ΡΡ Π² ΡΠ²Π΅ΡΠ»ΠΎΠ΅ Π±ΡΠ΄ΡΡΠ΅Π΅ Rust ΠΈ ΠΏΡΠΈΠ³Π»Π°ΡΠ°Ρ Π²ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΡ ΡΡΠ°ΡΡΠΈΠ΅!