Π§ΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡΡ Π½Π° rust
ΠΠ΅ΡΠ²ΡΠ΅ ΡΠ°Π³ΠΈ ΠΏΠΎ Rust
ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ. ΠΠ΅Π΄Π°Π²Π½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΡΡ Ρ Π½ΠΎΠ²ΡΠΌ Π΄Π»Ρ ΡΠ΅Π±Ρ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Rust. Π― Π·Π°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ ΠΎΠ½ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ , Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΠ½Π΅ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅ΡΠΈΠ» ΠΏΠΎΠΊΠΎΠΏΠ°ΡΡ Π³Π»ΡΠ±ΠΆΠ΅. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΠΈ ΡΠ²ΠΎΠΈΠΌΠΈ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΡΠΌΠΈ Ρ ΠΎΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ:
Π‘ΡΠ°Π·Ρ ΠΏΠΎΡΡΠ½Ρ, ΡΡΠΎ Ρ ΠΎΠΊΠΎΠ»ΠΎ Π΄Π΅ΡΡΡΠΈ Π»Π΅Ρ ΠΏΠΈΡΡ Π½Π° Java, ΡΠ°ΠΊ ΡΡΠΎ ΡΠ°ΡΡΡΠΆΠ΄Π°ΡΡ Π±ΡΠ΄Ρ ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠΎΠ»ΠΎΠΊΠΎΠ»ΡΠ½ΠΈ.
Killer feature
Rust ΠΏΡΡΠ°Π΅ΡΡΡ Π·Π°Π½ΡΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΡΠΈΠΏΠ° C/C++ ΠΈ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌΠΈ Java/C#/Python/Rubyβ¦ Π§Π΅ΠΌ Π±Π»ΠΈΠΆΠ΅ ΡΠ·ΡΠΊ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΆΠ΅Π»Π΅Π·Ρ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ, Π»Π΅Π³ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ. ΠΠΎ ΠΈ ΠΈΠΌΠ΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ ΠΎΡΡΡΡΠ΅Π»ΠΈΡΡ ΡΠ΅Π±Π΅ Π½ΠΎΠ³Ρ. Π ΠΏΡΠΎΡΠΈΠ²ΠΎΠ²Π΅Ρ Π‘/Π‘++ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Python/Java ΠΈ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅. Π Π½ΠΈΡ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°Π΄ΡΠΌΡΠ²Π°ΡΡΡΡ ΠΎΠ± ΠΎΡΠΈΡΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ. Π‘Π°ΠΌΠ°Ρ ΡΡΡΠ°ΡΠ½Π°Ρ Π±Π΅Π΄Π° β ΡΡΠΎ NPE, ΡΡΠ΅ΡΠΊΠΈ Π½Π΅ ΡΠ°ΠΊΠΎΠ΅ ΡΠΆ ΡΠ°ΡΡΠΎΠ΅ ΡΠ²Π»Π΅Π½ΠΈΠ΅. ΠΠΎ ΡΡΠΎΠ±Ρ ΡΡΠΎ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, garbage collector, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΆΠΈΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΠΆΠΈΠ·Π½ΡΡ, ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠΌΠ΅Π½ΡΡΠ°Ρ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΡΡΡ. ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° Π΅ΡΠ΅ Π΄Π°Π΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ, Π½ΠΎ Π½Π° ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ β ΡΠΏΠΎΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ, Π½Π΅ Π±ΡΠ΄Ρ Π΅Π³ΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡ.
Rust ΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΄Π°Π΅Ρ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅ Π½ΡΠΆΠ½Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡ ΠΈΡΡΠ΅Π½ΠΈΡ. ΠΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ΄ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Ρ.Π΅. ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΎΠΆΠ΅ Π½Π΅Ρ. Π Rust ΡΠ°ΠΊ ΠΆΠ΅ Π½Π΅Ρ ΠΏΡΡΡΡΡ ΡΡΡΠ»ΠΎΠΊ ΠΈ ΡΠΈΠΏΡ ΡΠ²Π»ΡΡΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌΠΈ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π΄Π°ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΡΠ΅ΠΌ Java.
Π ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ Π»Π΅ΠΆΠΈΡ ΠΈΠ΄Π΅Ρ Π²Π»Π°Π΄Π΅Π½ΠΈΡ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΠΎΠ΄Π°Π»ΠΆΠΈΠ²Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π²Π»Π°Π΄Π΅Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΡΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΠ°Π΅ΡΡΡ ΡΡΠΎΠΊ Π΅Π΅ ΠΆΠΈΠ·Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠ°, Π²ΡΠ΅ Π½Π° ΡΡΠΎ ΠΎΠ½Π° ΡΠΊΠ°Π·ΡΠ²Π°Π»Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΎΡΠΈΡΡΠΈΡΡ. Π’Π°ΠΊΠΆΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π°Π»ΠΆΠΈΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠΈ. Π’ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΎΠ΄ΠΈΠ½ ΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ.
ΠΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΊΡΡΠΊΠ΅ ΠΊΠΎΠ΄Π°. ΠΠ· ΠΌΠ΅ΡΠΎΠ΄Π° main() Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ test(), Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ MyStruct, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ°Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ°. Drop ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ Π±ΡΠ΄Π΅Ρ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½. Π§Π΅ΠΌ-ΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π² Java, ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Java, ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° drop() Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½.
ΠΡΠ²ΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
Π’.Π΅. ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ ΠΈΠ· test() ΠΏΠ°ΠΌΡΡΡ Π±ΡΠ»Π° ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΎΡΠΈΡΠ΅Π½Π°. ΠΠΎΠ·Π°Π±ΠΎΡΠΈΠ»ΡΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, Π²ΡΡΠ°Π²ΠΈΠ² Π½ΡΠΆΠ½ΡΠΉ ΠΊΠΎΠ΄. Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Box ΠΈ Option ΠΎΠΏΠΈΡΡ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Rust Π±Π΅ΡΠ΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΎΡ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΡΡΡ ΠΎΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π§ΡΠΎ Π΅ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ
ΠΠ°Π»Π΅Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Ρ ΡΠ΅ΡΡΡ ΡΠ·ΡΠΊΠ° ΠΏΠΎ ΡΠ±ΡΠ²Π°Π½ΠΈΡ Π²Π°ΠΆΠ½ΠΎΡΡΠΈ, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄.
Π’ΡΡ Rust Π²ΠΎΠΎΠ±ΡΠ΅ Π²ΠΏΠ΅ΡΠ΅Π΄ΠΈ ΠΏΠ»Π°Π½Π΅ΡΡ Π²ΡΠ΅ΠΉ. ΠΡΠ»ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΈΡΠ»ΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π½Π°Π΄ΠΎ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎ Π² Rust Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅Ρ Π²ΠΎΠΎΠ±ΡΠ΅. Π’.Π΅. ΠΊΠ»Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ². Π ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ Java ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π»ΠΎ Π±Ρ Π΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ final. ΠΠΎΠΎΠ±ΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ OOP Π½Π΅ ΡΠ°ΠΊ Π²Π΅Π»ΠΈΠΊΠΎ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΠΈ ΠΊ Π»ΡΡΡΠ΅ΠΌΡ.
ΠΠ»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ trait ΠΈ ΡΠΎΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΡΡΠ³ΠΈΠ²Π°ΡΡ, Ρ.ΠΊ. Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΠΎΠ»Π΅ΠΉ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΆΠ°Π»ΡΡΡΡΡ Π½Π° ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΄ΡΠΌΠ°Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½Ρ:
ΠΠ· ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΠ±ΡΠ°ΡΠΈΠ» Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ» Rust ΡΠ΄Π΅Π»ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π±ΡΠ»Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π΅Π»Π°ΡΡ ΡΡΡΠ»ΠΊΠΈ ΠΏΡΡΡΡΠΌΠΈ. ΠΡΠΎ ΠΌΠ½Π΅ ΡΠ΅ΠΌ-ΡΠΎ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠ»ΠΎ nullable ΡΠΈΠΏΡ ΠΈΠ· Kotlin. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΡΡΡΡ ΡΡΡΠ»ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Option. Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² Kotlin, ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΠ°ΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π±ΡΠ΄Π΅Ρ Π±ΠΈΡΡ ΠΏΠΎ ΡΡΠΊΠ°ΠΌ, Π·Π°ΡΡΠ°Π²Π»ΡΡ Π²ΡΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ. ΠΠΎΠΏΡΡΠΊΠ° ΠΆΠ΅ Π²ΡΡΠ°ΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΠΎ ΡΡΠΎΠ³ΠΎ ΡΠΆ ΡΠΎΡΠ½ΠΎ Π½Π΅Π»ΡΠ·Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Java.
ΠΠ½Π΅ Π΅ΡΠ΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΠΎΡΡ ΡΠΎ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΏΠΎΠ»Ρ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ. ΠΠΏΡΡΡ ΠΏΡΠΈΠ²Π΅Ρ Kotlin. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ, ΡΡΠΎ ΡΠ²Π½ΠΎ Π½Π°Π΄ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ mut. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΡΠ΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡΠΈ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π°. Π₯ΠΎΡΡ Option ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌ, ΡΡΠΎΠ³ΠΎ Ρ Π½Π΅ ΠΏΠΎΠ½ΡΠ», Π²ΠΎΡ ΠΊΠΎΠ΄ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ
Π Rust Π½Π°Π·ΡΠ²Π°ΡΡΡΡ enum. Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΠ½ΠΈ Π΅ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΡΠΎ ΡΡΠΎ-ΡΠΎ ΡΡΠ΅Π΄Π½Π΅Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡΠΌΠΈ ΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Π² Java. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ enum Option Π² ΠΌΠΎΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π· ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊ ΡΠ°ΠΊΠΎΠΌΡ ΡΠΈΠΏΡ:
ΠΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΠΊΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ:
Π ΡΠ°ΠΊΠΆΠ΅
Π― Π½Π΅ ΡΡΠ°Π²Π»Ρ ΡΠ΅Π±Π΅ ΡΠ΅Π»ΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ Rust, Π° ΠΏΡΠΎΡΡΠΎ Ρ ΠΎΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΡΡ Π΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ. Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΎΠΏΠΈΡΡ, ΡΡΠΎ Π΅ΡΠ΅ Π΅ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ, Π½ΠΎ, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, Π½Π΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ:
ΠΠΎΠΆΠΊΠΈ Π΄Π΅Π³ΡΡ
ΠΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ.
Killer problem
ΠΠ»Π°Π²Π½ΡΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ. ΠΠ° Π²ΡΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ»Π°ΡΠΈΡΡ. Π Rust ΠΎΡΠ΅Π½Ρ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ c ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ Π³ΡΠ°ΡΠΎΠ²ΡΠΌΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , Ρ.ΠΊ. Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ. ΠΠ»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΡΡΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π΅ΡΡΡ Π±ΡΠΊΠ΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²:
Π ΡΡΠΎ Π½Π΅ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ. ΠΠ»Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ±Ρ Rust, Ρ ΠΎΠΏΡΠΎΠΌΠ΅ΡΡΠΈΠ²ΠΎ ΡΠ΅ΡΠΈΠ» Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Ρ Π±Π°Π·ΠΎΠ²ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. Π ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΠ΅ΡΠ΅ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠ·Π΅Π» ΠΏΠΎΠ»ΡΡΠΈΠ»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ Option >:
ΠΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ ΡΠ΅Π±Π΅, ΠΈΡΠΎΠ³ΠΎ ΡΡΠΈ ΠΎΠ±Π΅ΡΡΠΊΠΈ Π²ΠΎΠΊΡΡΠ³ ΠΎΠ΄Π½ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠΎΠ΄ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΊΠΎΠ½Π΅Ρ ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ ΠΎΡΠ΅Π½Ρ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΉ, ΠΈ Π² Π½Π΅ΠΌ Π΅ΡΡΡ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠ΅ Π²Π΅ΡΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠ΄Π°Π»ΠΆΠΈΠ²Π°Π½ΠΈΡ:
ΠΠ° Kotlin ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅:
ΠΠ°ΠΊ Π²ΡΡΡΠ½ΠΈΠ» ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΌΠΈ Π΄Π»Ρ Rust, Π° ΠΌΠΎΠΉ ΠΊΠΎΠ΄ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ΅Π½. ΠΡΠ΄ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΈΡΡΡ ΡΠ΅Π»ΡΠ΅ ΡΡΠ°ΡΡΠΈ:
Π’ΡΡ Rust ΠΆΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡΡ ΡΠ°Π΄ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ Π΅ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π·Π°ΡΠΈΠΊΠ»Π΅Π½Π½ΡΠΌ ΡΡΡΠ»ΠΊΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, Ρ.ΠΊ. Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ garbage collector ΠΈΡ Π½Π΅ ΡΠ±Π΅ΡΠ΅Ρ. Π Π°Π±ΠΎΡΠΈΠΉ ΠΊΠΎΠ΄ Π½Π° Rust Ρ Π½Π΅ ΠΏΠΈΡΠ°Π», ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠ½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΠΆΠΈΠ·Π½Ρ. ΠΡΠ»ΠΎ Π±Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΡΡΡΠΈΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ².
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ
ΠΠΎΠ»Π³ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Rust Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°. ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ Ρ ΠΎΡΡ ΡΡΠΎ-ΡΠΎ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠΎΡΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Π²Π»Π°Π΄Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ, Ρ.ΠΊ. ΠΎΠ½Π° ΠΏΡΠΎΠ½ΠΈΠ·ΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΡΠΎΡΠΊΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΌΠ΅Π½Ρ Π·Π°Π½ΡΠ» ΠΏΠ°ΡΡ Π²Π΅ΡΠ΅ΡΠΎΠ², Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π½Π° Kotlin ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΏΠΈΡΠ΅ΡΡΡ Π·Π° 10 ΠΌΠΈΠ½ΡΡ, ΠΏΡΠΈ ΡΠΎΠΌ ΡΡΠΎ ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠ·ΡΠΊ. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΈΠ²ΡΡΠ½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ Π² Rust Π±ΡΠ΄ΡΡ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΠΎ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°ΡΡ. Π’.Π΅. ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π΅ Π½Π° Π½Π΅Π³ΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠ°Ρ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΉΠΊΠ° ΠΌΡΡΠ»Π΅Π½ΠΈΡ, ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ²ΠΎΠΈΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ. ΠΡΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ JavaScript, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ΅ ΠΏΡΠΎΠ³Π»ΠΎΡΠΈΡ ΠΈ Π²ΡΠ΅ ΡΡΠ΅ΡΠΏΠΈΡ. ΠΡΠΌΠ°Ρ, Rust Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΡΠ΅ΠΌ ΡΠ·ΡΠΊΠΎΠΌ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ°Ρ Π΄Π΅ΡΠ΅ΠΉ Π² ΡΠΊΠΎΠ»Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΆΠ΅ Ρ Π‘/Π‘++ Π² ΡΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π½ΡΠΎΠ².
Π ΠΈΡΠΎΠ³Π΅
ΠΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΉ ΠΈΠ΄Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. Π Π‘/Π‘++ Ρ ΠΌΠ΅Π½Ρ ΠΎΠΏΡΡΠ° Π½Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ Π±ΡΠ΄Ρ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΠΎ smart pointer. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π² ΡΠ΅Π»ΠΎΠΌ ΠΏΡΠΈΡΡΠ½ΡΠΉ ΠΈ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π»ΠΈΡΠ½Π΅Π³ΠΎ. Π― ΠΏΠΎΠΊΡΠΈΡΠΈΠΊΠΎΠ²Π°Π» Rust Π·Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π³ΡΠ°ΡΠΎΠ²ΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ , Π½ΠΎ, ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Ρ, ΡΡΠΎ ΡΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ Π²ΡΠ΅Ρ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π΅Π· GC. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Kotlin Π±ΡΠ»ΠΎ ΠΈ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ΅ΡΡΠ½ΡΠΌ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΠΊΠΎΡΠ½ΡΠ»ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ, Π΄ΡΠΌΠ°Ρ ΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ΅ΠΌΠ°. ΠΡΠ΅ Π΅ΡΡΡ ΠΏΠ»Π°Π½Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊΡΡ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΡΠΏΠΈΡΠΊΠ°, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΠΈΠ΄Π΅ΠΈ, ΠΏΡΠΎΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ . ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ·Π½Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ ΡΠΈΠΏΠΎΠ² Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΠΈΡΡΡ Π½Π° Rust.
ΠΠΎΡΠΈΡΠ°ΡΡ
ΠΡΠ»ΠΈ Π²Π°Ρ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π» Rust, ΡΠΎ Π²ΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ»ΠΎΠΊ:
UPD: ΠΡΠ΅ΠΌ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. Π£Π·Π½Π°Π» ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠ΅Π±Ρ. ΠΡΠΏΡΠ°Π²ΠΈΠ» Π½Π΅ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠΈ, Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΡΡΡΠ»ΠΎΠΊ. ΠΡΠΌΠ°Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.
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
Apr 17 Β· 12 min read
Rust β ΡΡΠΎ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π°Π±ΠΈΡΠ°ΡΡΠΈΠΉ ΡΠ΅ΠΊΠΎΡΠ΄Π½ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ Π΄Π»Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ.
Π 2020 Π³ΠΎΠ΄Ρ ΠΏΠΎ ΠΈΡΠΎΠ³Π°ΠΌ ΠΎΠΏΡΠΎΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Stack Overflow ΡΠ°ΠΌΡΠΌ Π»ΡΠ±ΠΈΠΌΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΆΠ΅ ΠΏΡΡΡΠΉ Π³ΠΎΠ΄ ΠΏΠΎΠ΄ΡΡΠ΄ Π±ΡΠ» ΠΏΡΠΈΠ·Π½Π°Π½ Rust. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ²Π΅ΡΠ΅Π½Ρ Π² ΡΠΎΠΌ, ΡΡΠΎ Rust ΡΠΊΠΎΡΠΎ ΠΎΠ±Π³ΠΎΠ½ΠΈΡ C ΠΈ C++ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΡΠ΅Π΄ΡΡΠ²Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π²Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΡΠ²Π½Π°Ρ ΠΈ ΡΠ²Π½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ.
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌ Π²Π°ΠΌ Π½Π°ΡΠ°ΡΡ Ρ Π° Π±ΠΎΡΡ Ρ Rust Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΎΠΏΡΡΠ°. ΠΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅Ρ Rust ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ², ΠΈΠ·ΡΡΠΈΠΌ Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π²Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Rust!
ΠΠΎΡ ΡΡΠΎ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π² ΡΡΠ°ΡΡΠ΅.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Rust?
Rust β ΡΡΠΎ ΠΌΡΠ»ΡΡΠΈΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ-Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ². ΠΠ½ Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ ΠΡΠ΅ΠΉΠ΄ΠΎΠ½ΠΎΠΌ Π₯ΠΎΡΠΎΠΌ Π² Mozilla Research Π² 2010 Π³ΠΎΠ΄Ρ.
Rust ΠΎΠΏΡΠΈΠΌΠ°Π»Π΅Π½ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈΡΠ΅ΠΌ Π°ΠΊΡΠ΅Π½Ρ Π·Π΄Π΅ΡΡ ΡΠ΄Π΅Π»Π°Π½ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ΅. ΠΡΠΎΡ ΡΠ·ΡΠΊ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΡ ΠΎΠΆ Π½Π° C ΠΈΠ»ΠΈ C++, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΡΡΠ»ΠΎΠΊ.
Rust β ΡΡΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌ Π±Π΅Π· ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Rust Π² Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΄ΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈΠ»ΠΈ Π² ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°Ρ .
Rust ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΎΡΠ»ΠΈΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π³ΠΎΠ½ΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΠ°ΡΠ΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ Rust?
Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Rust ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·-Π·Π° ΡΠΈΡΡΠ΅ΠΌΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠ΅ΠΉ Π²Π»Π°Π΄Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΈΠ²Π΅ΡΠΆΠ΅Π½Π½ΠΎΡΡΠΈ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΌΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΡ. Π Ρ ΠΎΡΡ Π΅Π³ΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π² ΠΊΡΡΠΏΠ½ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡ , Rust ΠΎΡΡΠ°Π΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ·ΡΠΊΠΎΠ², ΠΏΠΎΠ»ΡΡΠ°ΡΡΠΈΡ ΡΠ°ΠΌΡΠ΅ Π²ΡΡΠΎΠΊΠΈΠ΅ ΠΎΡΠ΅Π½ΠΊΠΈ.
Rust ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°ΡΡΡΡ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π½Π΅ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°ΡΡΠ΅Π³ΠΎΡΡ ΡΠΎΡΡΠ° ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌ ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΡΡΠ°ΡΡ ΡΠ·ΡΠΊΠΎΠΌ Π·Π°Π²ΡΡΠ°ΡΠ½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ΅Π±Ρ Π² ΡΠΎΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Rust ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡΡ, Π½Π°Π΄ΠΎΠ»Π³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ² ΡΠ΅Π±Ρ ΡΠ°Π±ΠΎΡΠΎΠΉ Ρ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΎΠΏΠ»Π°ΡΠΎΠΉ.
Β«Hello World!Β» Π½Π° Rust
Π Π°Π·Π±Π΅ΡΠ΅ΠΌ Π²ΡΠ΅ ΡΠ°ΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
fn β ΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ function (Β«Π€ΡΠ½ΠΊΡΠΈΡΒ»). Π Rust (ΠΊΠ°ΠΊ ΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ) ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ°ΠΊ Π±Ρ Π³ΠΎΠ²ΠΎΡΠΈΡ: Β«Π‘ΠΎΠΎΠ±ΡΠΈΡΠ΅ ΠΌΠ½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π° Ρ ΡΠ΄Π΅Π»Π°Ρ ΡΠΎ-ΡΠΎ ΠΈ ΡΠΎ-ΡΠΎ ΠΈ Π·Π°ΡΠ΅ΠΌ Π΄Π°ΠΌ ΠΎΡΠ²Π΅ΡΒ».
Π€ΡΠ½ΠΊΡΠΈΡ main β ΡΡΠΎ ΡΠΎ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°.
Π‘ΠΊΠΎΠ±ΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. Π‘Π΅ΠΉΡΠ°Ρ ΠΎΠ½ ΠΏΡΡΡ, ΡΠΎ Π΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½Π΅Ρ. ΠΠΎ ΡΠΊΠΎΡΠΎ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ.
ΠΠ°Π»ΡΡΠ΅ ΠΈΠ΄Π΅Ρ ΡΡΡΠΎΠΊΠ°. Π‘ΡΡΠΎΠΊΠΈ ΡΠΎΡΡΠΎΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΎΠ±ΡΠ°Π½Π½ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Π±ΡΠΊΠ² ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠ»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ ΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ ( » ). ΠΠ°ΡΠ΅ΠΌ ΡΡΡΠΎΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π΄Π»Ρ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΡΠΈΠΏΠ° println! ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΡ Π΅ΡΠ΅ ΠΏΠΎΠΈΠ³ΡΠ°Π΅ΠΌ.
Π ΡΡΠΎ ΡΠΎΡΠΊΠ° Ρ Π·Π°ΠΏΡΡΠΎΠΉ. ΠΠ½Π° ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠΎΠ½Π΅Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ ΡΠΎΡΠΊΠ° Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ β ΡΡΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½Π° Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΌΠ°ΠΊΡΠΎΡ. ΠΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠΊΠΎΡΠΎ ΡΠ²ΠΈΠ΄ΠΈΠΌ.
ΠΡΠ½ΠΎΠ²Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Rust
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Rust ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡΡ
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ β ΡΡΠΎ ΡΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π€ΠΎΡΠΌΠ°Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΊΠΎΠ²:
ΠΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΠΌ, Ρ. Π΅. ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ, ΡΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π‘ΠΎΠ²Π΅Ρ💡 ΠΡΠ΅Π³Π΄Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Π½Π°Π·Π²Π°Π½ΠΈΡ, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ ΡΠΎ ΡΡΡΠΎΡΠ½ΠΎΠΉ Π±ΡΠΊΠ²Ρ, Π° Π½ΠΎΠ²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π½Π°ΡΠΈΠ½Π°ΠΉΡΠ΅ Ρ Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ.
Π Rust ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Ρ. Π΅. ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π·Π°Π΄Π°Π½Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΡΠ°ΠΊΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ·ΡΠΊΠ° Rust ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΡΠΌ, Π½ΠΎ ΠΎΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π»ΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ΅Π΄Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π±Π°Π³ΠΎΠ², Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Ρ Π²Π°Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ΅ΠΌ Π»Π΅Π³ΡΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π°ΡΡΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ Ρ ΡΡΡΠ΄ΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ Π² Rust ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΈΡ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅.
Π§ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΎΠ±ΡΡΠ²ΠΈΠΌ Π΅Π΅ Π²ΠΎΡ ΡΠ°ΠΊ:
Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
ΠΠΎΠΊΠ° ΡΡΠΎ ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·Π°Π΄Π°ΡΡΡΡ Π»ΠΈΠ±ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°Π· (Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ), Π»ΠΈΠ±ΠΎ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π». ΠΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ Π²ΠΈΠ΄ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ΡΡ Π² Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠ½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ.
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°Ρ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ my_name Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π―Π²Π½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½. Rust ΡΠ΄Π΅Π»Π°Π΅Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Ρ Π΅Π³ΠΎ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ.
ΠΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ Π½Π΅Π΄ΠΎΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ Π΄Π»Ρ Π½Π΅Π΄ΠΎΠΏΡΡΠ΅Π½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ Π½Π° Rust:
Π€ΡΠ½ΠΊΡΠΈΠΈ
Π€ΡΠ½ΠΊΡΠΈΠΈ β ΡΡΠΎ Π½Π°Π±ΠΎΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Rust, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ ΠΊΡΠ°ΡΠΊΠΈΠΌ ΡΡΠ»ΠΎΠ²Π½ΡΠΌ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠΎΡ ΡΠΎΡΠΌΠ°Ρ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΡΠΎ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΠΎΠ΅ Π½Π°ΠΌ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ function (Β«Π€ΡΠ½ΠΊΡΠΈΡΒ»). ΠΠ° Π½ΠΈΠΌ Π² ΠΊΠΎΠ΄Π΅ Rust ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ΄Π΅ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΈ Π΅Π΅ Π²ΡΠ·ΠΎΠ²Π΅.
ΠΡΠΈ ΡΠΊΠΎΠ±ΠΊΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ Π»ΡΠ±ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ ΠΏΡΡΡΡΠΌΠΈ.
Π Π·Π΄Π΅ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΈΠΌΡ. ΠΡΠΎ ΠΈΠΌΡ Π²ΡΡΡΡΠΏΠ°Π΅Ρ Π² ΡΠΎΠ»ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡΡΡΠ»Π°ΡΡΠ΅ΠΉΡΡ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΠ΅Π»Π° ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΎΡΠ»Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΠΏ. ΠΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΏΡΡΠ°Π½ΠΈΡΡ Π½Π΅ΡΠ²Π½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² Rust Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Π°.
Π€ΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ Π½Π°ΡΠ°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°. ΠΠΎΠ΄ Π²Π½ΡΡΡΠΈ ΡΠΊΠΎΠ±ΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ.
Π ΡΡΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ Π΄Π»Ρ ΠΊΠΎΠ΄Π° ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΡΡΠ΅ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΡΠ΄Π° Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΌΠΎ Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°ΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ΅ΡΠ΅Π΄Π΅Π»Π°Π΅ΠΌ hello-world Π² ΡΡΠ½ΠΊΡΠΈΡ say_hello() :
Π‘ΠΎΠ²Π΅Ρ💡 Π£Π²ΠΈΠ΄Π΅Π»ΠΈ () β Π·Π½Π°ΡΠΈΡ, Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π΄Π΅Π»ΠΎ Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½Π΅Ρ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²Π½ΡΡΡΠΈ ΡΠΊΠΎΠ±ΠΎΠΊ ΠΏΡΡΡΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². Π‘Π°ΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠΈ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΎΡΡΠ°ΡΡΡΡ, ΡΠΊΠ°Π·ΡΠ²Π°Ρ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΠΎΡ ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°:
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ β ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ΅Π½ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΡΠ΅Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°. ΠΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π°Π²ΡΠΎΡΡ ΠΊΠΎΠ΄Π° Π±ΡΡΡΡΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ ΡΠ²ΠΎΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, Π° Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ β Π±ΡΡΡΡΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°. Π’Π°ΠΊ ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Ρ ΠΎΡΠΎΡΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΡΠ΅ΠΌ.
Π‘ΠΎΠ²Π΅Ρ💡 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Β«Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ» ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² ΠΊΠΎΠ΄Π°, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, Π½ΠΎ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ.
Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ
Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΡΡΠΈΠ½Π½ΠΎΡΡΠΈ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡΠ° ΡΡΠ»ΠΎΠ²ΠΈΠΉ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠΎΠ»ΡΡΠ°ΡΡΡΡ Π°Π΄Π°ΠΏΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ°ΡΠΈΡΠΌΠΈ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠΎΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΎΠΏΡΡΡΠΈΠΌ, Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΠ΅ Π½Π΅Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠΎΡΠΌΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° if :
Π‘ΠΎΠ²Π΅Ρ💡 Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ Π² ΡΠΈΠΊΠ»Π°Ρ while ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π±ΡΠ»Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΡΠ°ΠΊΠΎΠΉ ΡΠΈΠΊΠ» Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ.
ΠΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ Rust: Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ ΠΈ ΡΡΡΡΠΊΡΡΡΡ
ΠΠ»Π°Π΄Π΅Π½ΠΈΠ΅
ΠΠ»Π°Π΄Π΅Π½ΠΈΠ΅ β ΡΡΠΎ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ Rust ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½ ΡΠ°ΠΊΠΎΠΉ Π΅Π³ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ.
ΠΠΎ Π²ΡΠ΅Ρ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ·ΡΠΊΠ°Ρ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Java, JavaScript ΠΈΠ»ΠΈ Python, Π΅ΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠΈ ΠΌΡΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π°Π»ΡΡΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΡΡΠ»ΠΊΠΈ. Π Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΡΠΈΠΏΠ° C ΠΈΠ»ΠΈ C++ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π²ΡΠ΄Π΅Π»ΡΡΡ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ Π²ΡΡΡΠ½ΡΡ.
Π ΡΡΠ½ΠΎΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΡΠΎΠΏΡΡΠΆΠ΅Π½ΠΎ Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π·Π°ΡΡΡΠ΄Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ. ΠΠΎΠ³Π΄Π° ΠΏΠ°ΠΌΡΡΡ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π° ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΎΠ½Π° ΡΠ°ΡΡ ΠΎΠ΄ΡΠ΅ΡΡΡ Π²ΠΏΡΡΡΡΡ. Π ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ°Π½Π½Π΅Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠ°ΠΊ ΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π²Π°ΠΆΠ΄Ρ, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅.
Rust Π²ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅Ρ ΠΎΡ Π²ΡΠ΅Ρ ΡΡΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΠ° Π²Π»Π°Π΄Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°Π±ΠΎΡΠ° ΠΏΡΠ°Π²ΠΈΠ», ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΠΎΡ ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π²Π»Π°Π΄Π΅Π½ΠΈΡ.
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ. ΠΠ»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ. ΠΡΠ»ΠΈ ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² Π΄ΡΡΠ³ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΈΠ»ΠΈ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ Π²Π»Π°Π΄Π΅Π»ΡΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Ρ Π½Π΅Π³ΠΎ.
Π‘ΡΡΡΠΊΡΡΡΡ
ΠΠ½Π°Π»ΠΎΠ³ΠΎΠΌ ΡΡΠΈΡ ΡΡΡΡΠΊΡΡΡ Π² ΡΠ°ΠΊΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , ΠΊΠ°ΠΊ Java ΠΈ Python, ΡΠ²Π»ΡΡΡΡΡ ΠΊΠ»Π°ΡΡΡ.
ΠΠΎΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ:
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠΈΠΏΠ° Car Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΡΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ. ΠΠΎΡΡΠΎΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Car Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π΄Π»Ρ brand (ΠΌΠΎΠ΄Π΅Π»ΠΈ) ΠΈ year (Π³ΠΎΠ΄Π° Π²ΡΠΏΡΡΠΊΠ°).
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Car Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅ΠΌ ΡΡΡΠ»Π°ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π²ΡΡ ΡΡΡΡΠΊΡΡΡΠ° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ:
Π ΡΠ΅Π»ΠΎΠΌ ΡΡΡΡΠΊΡΡΡΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅ Π²ΡΠ΅ΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΎΡΠ½ΠΎΡΡΡΠ΅ΠΉΡΡ ΠΊ ΡΠΎΠΌΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌΡ ΡΠΈΠΏΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π½Π΅ΠΉ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ±ΠΎΡΠΊΠΈ Rust: Cargo
Cargo β ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΈ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Rust. ΠΡΠΎ Π²Π°ΠΆΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Rust. ΠΠ΄Π΅ΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ (ΠΎΠ½ΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ). ΠΠ½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π»ΡΠ±ΡΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Rust ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΡ ΠΈΠΌΠ΅Π»ΠΈ Π΄Π΅Π»ΠΎ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΡ, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄Π»Ρ Π½ΠΈΡ Π½Π΅ Π½ΡΠΆΠ½Ρ. Π Π²ΠΎΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Cargo Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Cargo ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π² ΠΏΠΎΡΡΡΠΎΠ»ΠΈΠΎ Π½Π° GitHub, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ ΡΠ°Π½ΡΡ Π²ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²ΠΌΠ΅ΡΡΠ΅.
ΠΡΠ»ΠΈ ΡΠΊΠ°ΡΠ°ΡΡ Rust Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°, Cargo Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ( rustc ) ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ( rustdoc ) ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ Π½Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² Rust. Π£Π±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Cargo ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π²Π²ΠΎΠ΄ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ Cargo Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π§ΡΠΎΠ±Ρ Π²ΡΠ΅ ΡΡΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, Π½Π°Π±Π΅ΡΠΈΡΠ΅:
ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊΠ°ΠΆΡΡΡΡ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌΠΈ, Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΈΠ· Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π³ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΡΡΡ ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΌΡ ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΡ Rust! ΠΠΎΠ΄ ΠΎΡ Π³ΠΎΠ΄Π° Rust ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ, Π° ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Π·Π°Π²Π΅ΡΡΠΈΡΡ Π½Π°Π²ΡΠΊΠ°ΠΌΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠΈΡΡΠ΅ΠΌ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ.
ΠΠ±Π·ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ 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 ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ ΡΠ·ΡΠΊΠ°.