Rust ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
Rust ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
Rust Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π±ΡΡΡΡ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ: Π±Π΅Π· ΡΠ°Π½ΡΠ°ΠΉΠΌΠ° ΠΈΠ»ΠΈ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ° ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π½Π° Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ.
ΠΠ°Π΄ΡΠΆΠ½ΠΎΡΡΡ
ΠΠΎΠ³Π°ΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΎΠ² Rust ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ Π²Π»Π°Π΄Π΅Π½ΠΈΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΡΡΠ°Π½ΠΈΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΡΡΡ
Π£ Rust ΠΎΡΠ»ΠΈΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, Π΄ΡΡΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ β ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠ±ΠΎΡΠΊΠΈ, ΡΠΌΠ½Π°Ρ ΠΌΡΠ»ΡΡΠΈΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Ρ Π°Π²ΡΠΎΠΊΠΎΠΌΠΏΠ»ΠΈΡΠΎΠΌ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΠΌΠΈ ΡΠΈΠΏΠΎΠ², Π°Π²ΡΠΎΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄ΡΡΠ³ΠΈΠΌ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠΎ Π² Rust
Π 2018 Π³ΠΎΠ΄Ρ, ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Rust ΠΏΡΠΈΠ½ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ·ΡΠΊΠ° Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ (ΡΠΌΠΎΡΡΠΈΡΠ΅ roadmap Π½Π° 2018 Π³ΠΎΠ΄). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΡΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ ΠΏΠΎΡΡΡΡΠ°ΡΡΠΈΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ.
ΠΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ°
ΠΡΡΡΡΠΎ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°Π΄ΡΠΆΠ½ΠΎΠΉ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ Rust. Rust ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ Π»ΡΠ³ΠΊΠΎΡΡΡΡ Π΅Π³ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡ.
WebAssembly
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Rust Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΡΡΠ΄ΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ JavaScript, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π·Π° ΡΠ°Π·. ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ Π² npm, ΡΠΏΠ°ΠΊΡΠΉΡΠ΅ Ρ webpack ΠΈ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΊ ΡΠΎΡΠ΅Π²Π½ΠΎΠ²Π°Π½ΠΈΡΠΌ.
Π‘Π΅ΡΠ΅Π²ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΡΠΎΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ. ΠΠΎΡΡΡΡΠ°ΡΡΠ°Ρ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΡ. Rust ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π²ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
ΠΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ
ΠΡΠΈΠ΅Π½ΡΠΈΡΡΠ΅ΡΠ΅ΡΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΠΌΠ°Π»ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ? ΠΡΠΆΠ΅Π½ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π±Π΅Π· ΠΎΡΠΊΠ°Π·Π° ΠΎΡ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠ΄ΠΎΠ±ΡΡΠ²? Rust ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡ ΡΡΠΎ.
ΠΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Rust
Π‘ΠΎΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Rust Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Π΄Π»Ρ Π±ΡΡΡΡΡΡ ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ. Π’Π°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΊΠ°ΠΊ Firefox, Dropbox ΠΈ Cloudflare, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Rust. Rust ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΡΡΠ°ΡΡΠ°ΠΏΠΎΠ², ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΠΊΠ°ΠΊ Π΄Π»Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΡΡΡΠΎΠΉΡΡΠ², ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ web-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
ΠΠΎΠΉ ΡΠ°ΠΌΡΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠΎΠΌΠΏΠ»ΠΈΠΌΠ΅Π½Ρ Rust β ΡΠΎ, ΡΡΠΎ ΠΎΠ½ ΡΠΊΡΡΠ½ΡΠΉ, ΠΈ ΡΡΠΎ ΠΏΠΎΡΡΡΡΠ°ΡΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠ»ΠΈΠΌΠ΅Π½Ρ.
β Chris Dickinson, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ npm, Inc
β Antonio Verardi, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ ΠΏΠΎ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅
ΠΡΠΈΠΌΠΈΡΠ΅ ΡΡΠ°ΡΡΠΈΠ΅
Π§ΠΈΡΠ°ΠΉ ΠΏΡΠΎ Rust
ΠΡ Π»ΡΠ±ΠΈΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ! ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ Π±Π»ΠΎΠ³ΠΈ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°.
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΠΏΡΠΎ Rust
Π£ Rust ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ°Π½Π°Π» Π½Π° YouTube, Π³Π΄Π΅ ΡΠΎΠ±ΡΠ°Π½ΠΎ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΉ ΠΈ ΡΡΠ΅Π±Π½ΡΡ ΠΏΠΎΡΠΎΠ±ΠΈΠΉ.
Π‘Π΄Π΅Π»Π°ΡΡ Π²ΠΊΠ»Π°Π΄
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΠΈ
Rust Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π» Π±Ρ Π±Π΅Π· ΡΠ΅Π΄ΡΠΎΠ³ΠΎ Π²ΠΊΠ»Π°Π΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ°Π±ΠΎΡΡ ΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΎΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π»ΠΈΡ ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ. ΠΡ ΠΎΡΠ΅Π½Ρ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½Ρ Π·Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ!
ΠΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΈ
ΠΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΡΠΏΠΎΠ½ΡΠΎΡΡ
ΠΡΠΎΠ΅ΠΊΡ 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 ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ ΡΠ·ΡΠΊΠ°.