Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ язык программирования Rust?

Rust Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π΅Π³ΠΎ цСнности ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠœΡ‹ расскаТСм ΠΏΡ€ΠΎ основныС прСимущСства языка программирования Rust.

Π§Ρ‚ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρƒ Rust ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков?

Π’ пСрСчислСнныС опрСдСлСния слоТно ΠΏΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, это выглядит нСрСалистичным заявлСниСм, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π½Π΅Π΅ всС языки Π²Ρ‹Π±ΠΈΡ€Π°Π»ΠΈ ΠΎΠ΄Π½Ρƒ ΠΈΠ· сторон: Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Π£ΠΊΠ»ΠΎΠ½ Π² сторону надёТности Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ дСмонстрируСт язык Haskell, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ ΠΈ обСспСчиваСт высокиС ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ бСзопасности. Всё, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ исправно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π“Π»Π°Π²Π½Ρ‹ΠΉ нСдостаток – это низкая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, слоТно ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ высокой скорости написанный Π½Π° Haskell.

Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. rust lang 1. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„ΠΎΡ‚ΠΎ. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ-rust lang 1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° rust lang 1

Rust Π²ΠΎΠ±Ρ€Π°Π» Π² сСбя Π»ΡƒΡ‡ΡˆΠΈΠ΅ характСристики C++ ΠΈ Haskell, Π° Ρ‚Π°ΠΊΠΆΠ΅ смог ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠ².

Π’ Ρ‡Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€Π΅Π»Π΅ΡΡ‚ΡŒ языка Rust?

Π’ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹Π΅ характСристики Rust стали доступными ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ основ компилирования ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ сущности Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° (owner), ΠΎ программистС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ»ΠΈ занял ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (mutable borrow), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ± ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Π·Ρ€ΠΈΡ‚Π΅Π»Π΅ (immutable borrow).

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Java ΠΈΠ»ΠΈ ΠΆΠ΅ C++, приходится ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² памяти, хотя Π²ΠΈΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… нСсколько отличаСтся. Π’ Rust это рСализуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ языковых конструкций, данная информация ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ компилятору Π·Π°Π΄Π°Ρ‡Ρƒ установлСния личности ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠ΄Π±ΠΎΡ€Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ повСдСния. Благодаря компилятору ΠΌΠΎΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ устранСниС ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ частых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Ρ…ΠΎΠ΄Π΅ выполнСния ΠΊΠΎΠ΄Π°.

Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. rust lang 2. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„ΠΎΡ‚ΠΎ. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ-rust lang 2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° rust lang 2

Π­Ρ‚ΠΎΠΌΡƒ языку Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ нСсколько ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. НСсмотря Π½Π° Π½Π΅ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΡΡ‚ΡŒ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ достаточно ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ ΠΈ эффСктивный. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ опрСдСлимся с основами языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ способны завСсти Π² Ρ‚ΡƒΠΏΠΈΠΊ ΠΏΡ€ΠΈ Π½Π°Ρ‡Π°Π»Π΅ изучСния:

Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. rust lang 3. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„ΠΎΡ‚ΠΎ. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ-rust lang 3. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° rust lang 3

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π―Π·Ρ‹ΠΊ Rust ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡΡŠΠ΅ΡΡ‚ΡŒ

Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. anonymous. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„ΠΎΡ‚ΠΎ. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ-anonymous. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° anonymous

Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. anonymous. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„ΠΎΡ‚ΠΎ. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ-anonymous. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° anonymous

Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. content 211. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„ΠΎΡ‚ΠΎ. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ-content 211. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° content 211

Π˜Ρ‚Π°ΠΊ, Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈΠ½Π½ΠΈΠΊΠ° (15 мая 2016 Π³ΠΎΠ΄Π° Π΅ΠΌΡƒ исполнился Π³ΠΎΠ΄) β€” Rust. Π­Ρ‚ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ язык программирования, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Mozilla, Ρ‚Ρ€ΠΈ основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ: ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ эргономика. Π‘Π°ΠΌΠΈ создатСли нСскромно ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ вСроятных наслСдников C/C++. Богласно опросу ΠΏΠΎΡ€Ρ‚Π°Π»Π° StackOverflow, ΠΈΠΌΠ΅Π½Π½ΠΎ Rust сСгодня Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ язык. Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½ ΠΈΠ· сСбя прСдставляСт.

Rust для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°

НС хочСтся Π½ΠΈΠΊΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ°Π½Ρ‹Π²Π°Ρ‚ΡŒ, поэтому Π΄Π°Π»Π΅Π΅ отвСтствСнноС заявлСниС: Rust довольно слоТСн для обучСния. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, это обусловлСно ΠΌΠΎΠ»ΠΎΠ΄ΠΎΡΡ‚ΡŒΡŽ языка ΠΈ, ΠΊΠ°ΠΊ слСдствиС, ΠΌΠ°Π»Ρ‹ΠΌ количСством Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ Π΄Π°Π»Ρ‘ΠΊΠΎΠΌΡƒ ΠΎΡ‚ программирования, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΌΡƒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ IT-спСциалиста Π±ΡƒΠ΄Π΅Ρ‚ сильно Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ малСйшиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π° отсутствиС ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ наслСдования Π² языкС ΠΈ просто поставит Π² Ρ‚ΡƒΠΏΠΈΠΊ.

Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Rust быстро развиваСтся (ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 6 нСдСль Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ·), сообщСство растёт, Π° Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ ΡƒΠΆΠ΅ Π½Π΅ составляСт Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π°.

Как ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ

ΠŸΠΎΡ‡Ρ‚ΠΈ всё Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сообщСство послСдоватСлСй Rust вСсьма ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎ ΠΈ Π΄ΠΎΠ±Ρ€ΠΎΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, поэтому Π·Π° совСтом всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² IRC (Π΅ΡΡ‚ΡŒ русский Ρ€Π°Π·Π΄Π΅Π») ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΡƒΠΌ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠ½Π΅ΠΌΠ½ΠΎΠ³Ρƒ стали ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΊΠ½ΠΈΠ³ΠΈ, Π² Ρ‚ΠΎΠΌ числС элСктронныС. Пока Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… качСство, Π½ΠΎ Ρ„Π°ΠΊΡ‚ Ρ‚Π°ΠΊΠΎΠΉ имССтся.

Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΎΡˆΡ‘Π» Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΡΡ‚Π°Π΄ΠΈΡŽ знакомства, Π½Π° GiHub ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΡƒΠΉΠΌΡƒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, Π² Ρ‚ΠΎΠΌ числС RFC ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ Π»ΠΈΡ‡Π½ΠΎ ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΉ ΠΏΠΎ Rust, Π½Π°ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… Π½Π° Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ Π³ΠΎΠ΄Π°. Π’ΠΎΡ‚ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ:

Ну Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ‚Π΅ΠΌΠΈ, ΠΊΡ‚ΠΎ считаСт Rust своим ΠΏΡ€ΠΈΠ·Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ Π½ΠΈΡ… всС прСмудрости, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ²ΡΠ·Π°Ρ‚ΡŒΡΡ с ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ участниками встрСч ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠΎΠ² языка Π² МосквС.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ

НСмного дублируя Ρ‚ΠΎ, ΠΎ Ρ‡Ρ‘ΠΌ Π±Ρ‹Π»ΠΎ сказано Ρ€Π°Π½Π΅Π΅, Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ основныС ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы языка Rust.

ΠŸΠ»ΡŽΡΡ‹:

ΠœΠΈΠ½ΡƒΡΡ‹:

Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. content 210. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„ΠΎΡ‚ΠΎ. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ-content 210. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° content 210

На самом Π΄Π΅Π»Π΅ ΠΊ отличиям, Π²Ρ€ΠΎΠ΄Π΅ Π·Π°ΠΌΠ΅Π½Ρ‹ наслСдования Π½Π° способности, быстро ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ°Π΅ΡˆΡŒ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³Π»Π°Π·Π° ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ, Ρ€ΡƒΠΊΠΈ набились, Rust прСвращаСтся Π²ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ язык, ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π΅Π΅ C++, Π½ΠΎ ΡƒΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎ «красивости» ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ языкам программирования. ЀактичСски ΠΆΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Rust ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠΎΠ² β€” ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ.

Π’ΠΎΡΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ

На сСгодняшний дСнь Rust популярСн срСд Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΠ³Ρ€, Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм. Однако ΠΏΠΎ понятным ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ количСство стационарных мСст, Π³Π΄Π΅ Π±Ρ‹ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈΡΡŒ ΡƒΠ·ΠΊΠΎΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π·Π½Π°Ρ‚ΠΎΠΊΠΈ Rust, Π² ΠΌΠΈΡ€Π΅ ΠΈ ΡƒΠΆΠ΅ Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π² России ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅Π²Π΅Π»ΠΈΠΊΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΈΠ΄Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… прСдпосылок, Ρ‡Ρ‚ΠΎ язык ΠΊΠ°Π½Π΅Ρ‚ Π² Π»Π΅Ρ‚Ρƒ, большС ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΏΠ»Π°Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Π·Π°Ρ…Π²Π°Ρ‚ ΠΌΠΈΡ€Π°. А Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ использования Rust Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΉΡ‚ΠΈ Π²Ρ‹ΡΠΎΠΊΠΎΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠ°ΠΊ Π² нашСй странС, Ρ‚Π°ΠΊ ΠΈ Π·Π° Ρ€ΡƒΠ±Π΅ΠΆΠΎΠΌ.

Π•Ρ‰Π΅ вострСбованного: профСссия Β«Π’Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΒ».

Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. content 211. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„ΠΎΡ‚ΠΎ. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ-content 211. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° content 211

Π˜Ρ‚Π°ΠΊ, Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈΠ½Π½ΠΈΠΊΠ° (15 мая 2016 Π³ΠΎΠ΄Π° Π΅ΠΌΡƒ исполнился Π³ΠΎΠ΄) β€” Rust. Π­Ρ‚ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ язык программирования, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Mozilla, Ρ‚Ρ€ΠΈ основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ: ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ эргономика. Π‘Π°ΠΌΠΈ создатСли нСскромно ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ вСроятных наслСдников C/C++. Богласно опросу ΠΏΠΎΡ€Ρ‚Π°Π»Π° StackOverflow, ΠΈΠΌΠ΅Π½Π½ΠΎ Rust сСгодня Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ язык. Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½ ΠΈΠ· сСбя прСдставляСт.

Rust для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°

НС хочСтся Π½ΠΈΠΊΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ°Π½Ρ‹Π²Π°Ρ‚ΡŒ, поэтому Π΄Π°Π»Π΅Π΅ отвСтствСнноС заявлСниС: Rust довольно слоТСн для обучСния. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, это обусловлСно ΠΌΠΎΠ»ΠΎΠ΄ΠΎΡΡ‚ΡŒΡŽ языка ΠΈ, ΠΊΠ°ΠΊ слСдствиС, ΠΌΠ°Π»Ρ‹ΠΌ количСством Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ Π΄Π°Π»Ρ‘ΠΊΠΎΠΌΡƒ ΠΎΡ‚ программирования, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΌΡƒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ IT-спСциалиста Π±ΡƒΠ΄Π΅Ρ‚ сильно Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ малСйшиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π° отсутствиС ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ наслСдования Π² языкС ΠΈ просто поставит Π² Ρ‚ΡƒΠΏΠΈΠΊ.

Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Rust быстро развиваСтся (ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 6 нСдСль Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ·), сообщСство растёт, Π° Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ ΡƒΠΆΠ΅ Π½Π΅ составляСт Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π°.

Как ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ

ΠŸΠΎΡ‡Ρ‚ΠΈ всё Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сообщСство послСдоватСлСй Rust вСсьма ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎ ΠΈ Π΄ΠΎΠ±Ρ€ΠΎΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, поэтому Π·Π° совСтом всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² IRC (Π΅ΡΡ‚ΡŒ русский Ρ€Π°Π·Π΄Π΅Π») ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΡƒΠΌ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠ½Π΅ΠΌΠ½ΠΎΠ³Ρƒ стали ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΊΠ½ΠΈΠ³ΠΈ, Π² Ρ‚ΠΎΠΌ числС элСктронныС. Пока Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… качСство, Π½ΠΎ Ρ„Π°ΠΊΡ‚ Ρ‚Π°ΠΊΠΎΠΉ имССтся.

Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΎΡˆΡ‘Π» Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΡΡ‚Π°Π΄ΠΈΡŽ знакомства, Π½Π° GiHub ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΡƒΠΉΠΌΡƒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, Π² Ρ‚ΠΎΠΌ числС RFC ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ Π»ΠΈΡ‡Π½ΠΎ ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΉ ΠΏΠΎ Rust, Π½Π°ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… Π½Π° Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ Π³ΠΎΠ΄Π°. Π’ΠΎΡ‚ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ:

Ну Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ‚Π΅ΠΌΠΈ, ΠΊΡ‚ΠΎ считаСт Rust своим ΠΏΡ€ΠΈΠ·Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ Π½ΠΈΡ… всС прСмудрости, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ²ΡΠ·Π°Ρ‚ΡŒΡΡ с ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ участниками встрСч ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠΎΠ² языка Π² МосквС.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ

НСмного дублируя Ρ‚ΠΎ, ΠΎ Ρ‡Ρ‘ΠΌ Π±Ρ‹Π»ΠΎ сказано Ρ€Π°Π½Π΅Π΅, Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ основныС ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы языка Rust.

ΠŸΠ»ΡŽΡΡ‹:

ΠœΠΈΠ½ΡƒΡΡ‹:

Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. content 210. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„ΠΎΡ‚ΠΎ. Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ-content 210. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Rust для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° content 210

На самом Π΄Π΅Π»Π΅ ΠΊ отличиям, Π²Ρ€ΠΎΠ΄Π΅ Π·Π°ΠΌΠ΅Π½Ρ‹ наслСдования Π½Π° способности, быстро ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ°Π΅ΡˆΡŒ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³Π»Π°Π·Π° ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ, Ρ€ΡƒΠΊΠΈ набились, Rust прСвращаСтся Π²ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ язык, ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π΅Π΅ C++, Π½ΠΎ ΡƒΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎ «красивости» ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ языкам программирования. ЀактичСски ΠΆΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Rust ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠΎΠ² β€” ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ.

Π’ΠΎΡΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ

На сСгодняшний дСнь Rust популярСн срСд Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΠ³Ρ€, Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм. Однако ΠΏΠΎ понятным ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ количСство стационарных мСст, Π³Π΄Π΅ Π±Ρ‹ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈΡΡŒ ΡƒΠ·ΠΊΠΎΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π·Π½Π°Ρ‚ΠΎΠΊΠΈ Rust, Π² ΠΌΠΈΡ€Π΅ ΠΈ ΡƒΠΆΠ΅ Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π² России ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅Π²Π΅Π»ΠΈΠΊΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΈΠ΄Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… прСдпосылок, Ρ‡Ρ‚ΠΎ язык ΠΊΠ°Π½Π΅Ρ‚ Π² Π»Π΅Ρ‚Ρƒ, большС ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΏΠ»Π°Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Π·Π°Ρ…Π²Π°Ρ‚ ΠΌΠΈΡ€Π°. А Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ использования Rust Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΉΡ‚ΠΈ Π²Ρ‹ΡΠΎΠΊΠΎΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠ°ΠΊ Π² нашСй странС, Ρ‚Π°ΠΊ ΠΈ Π·Π° Ρ€ΡƒΠ±Π΅ΠΆΠΎΠΌ.

Π•Ρ‰Π΅ вострСбованного: профСссия Β«Π’Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΒ».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ история Rust: ΠΎΡ‚ Ρ…ΠΎΠ±Π±ΠΈ Π΄ΠΎ самого популярного ЯП ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ StackOverflow

Rust β€” это язык систСмного программирования, создатСли ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠ΄Π΅Π»ΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚Ρ€Π΅ΠΌ Π²Π΅Ρ‰Π°ΠΌ: ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΡƒ, скорости ΠΈ бСзопасности. И хотя Rust считаСтся ΠΌΠΎΠ»ΠΎΠ΄Ρ‹ΠΌ языком программирования β€” Π΅Π³ΠΎ пСрвая ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ вСрсия Π²Ρ‹ΡˆΠ»Π° Π² 2015 Π³ΠΎΠ΄Ρƒ β€” ΠΎΠ½ разрабатываСтся ΡƒΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ дСсяти Π»Π΅Ρ‚.

БСгодня ΠΌΡ‹ Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅ ΠΈ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ языка Rust, ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ измСнились Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ возмоТности Π·Π° врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ привСсти ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ внСдрСния этого ЯП Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

Π›ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (2006–2010)

ВСхнология ΠΈΠ· ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ, которая ΠΏΡ€ΠΈΠ·Π²Π°Π½Π° спасти Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ ΠΎΡ‚ самого сСбя

β€” Грэйдон Π₯ΠΎΡ€ (Graydon Hoare), Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Rust

Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Ρ†ΠΈΡ‚Π°Ρ‚ Грэйдона Π₯ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ·Π²ΡƒΡ‡ΠΈΠ» Π‘Ρ‚ΠΈΠ² Клабник (Steve Klabnik) ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Rust Π²ΠΎ врСмя своСй ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ ACM Π² 2016 Π³ΠΎΠ΄Ρƒ (слайды ΠΊ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ ссылкС, Π° для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ слайдами, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ стрСлки Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅). Π­Ρ‚ΠΈ слова Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Rust β€” Π½Π΅ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ язык, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Он просто Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя мноТСство Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ· «старых» языков (Π² Ρ‚ΠΎΠΌ числС C++), ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ ΠΈΡ… Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ.

Π—Π°Π½ΠΈΠΌΠ°ΡΡΡŒ языком, Грэйдон установил ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°. Он ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π», Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ сСмантикС языка, Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ синтаксисом β€” это послСднСС Π΄Π΅Π»ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Ρ€Π°Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Rust ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова Π±Ρ‹Π»ΠΈ Π½Π΅ Π΄Π»ΠΈΠ½Π½Π΅Π΅ пяти символов β€” язык Π±Ρ‹Π» Β«ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌΒ» ΠΈ использовал Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠ°ΠΊ log, ret ΠΈ fn.

НапримСр, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° Rust, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠ²ΠΈΠ΄Π΅Π» свСт, выглядСл Ρ‚Π°ΠΊ:

Как ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Π‘Ρ‚ΠΈΠ² Клабник, со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ снято: Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов Β«ΡƒΠ΄Π»ΠΈΠ½ΠΈΠ»ΠΈΒ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ret прСвратился Π² return, Π° Ρ‡Π°ΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ совсСм. Для сравнСния, Π² соврСмСнной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языка Π²Ρ‹Π²ΠΎΠ΄ строки Β«ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!Β» выглядит Ρ‚Π°ΠΊ:

Π’Π°ΠΊΠΆΠ΅ Π·Π° врСмя ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов языка Π±Ρ‹Π»Π° ΡƒΠ±Ρ€Π°Π½Π°. Когда Π½Π°Π΄ языком Ρ€Π°Π±ΠΎΡ‚Π°Π» Грэйдон, Rust Π±Ρ‹Π» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈ использовал ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ obj для описания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². БСйчас ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ΅ ООП языком Π½Π΅ поддСрТиваСтся, Π½ΠΎ Rust Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΅Π³ΠΎ понятия с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ абстракций.

Rust Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π» с функциями парамСтричСского ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ программирования Π² языкС ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ ΠΈ сСйчас (ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π² этом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅), ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π΅ΡΡΡ‚ΡŒ Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ для обозначСния Ρ‚ΠΈΠΏΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² использовались ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки:

Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π΄ Rust Грэйдон Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π° протяТСнии Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π»Π΅Ρ‚. Π—Π° это врСмя Π΅ΠΌΡƒ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²ΠΎΠΏΠ»ΠΎΡ‚ΠΈΡ‚ΡŒ Π² Тизнь ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 90% Π·Π°Π΄ΡƒΠΌΠ°Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π»Π° довольно Π³Ρ€ΡƒΠ±ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ). Π‘Ρ€Π΅Π΄Π° для выполнСния ΠΊΠΎΠ΄Π° Π±Ρ‹Π»Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° Π½Π° 70%. ВсСго Π·Π° это врСмя Π₯ΠΎΡ€ написал 38 тыс. строк ΠΊΠΎΠ΄Π° для компилятора Π½Π° OCaml.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Mozilla (2010–2012)

Π― Π½Π΅ ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Ρƒ языка Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π³Π»Π°Π²Π½Ρ‹Π΅ особСнности.

Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° понятных ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Β«Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚Β» Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ

β€” Грэйдон Π₯ΠΎΡ€ (Graydon Hoare), Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Rust

По ΠΏΡ€ΠΎΡˆΠ΅ΡΡ‚Π²ΠΈΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π»Π΅Ρ‚, Грэйдон Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ свой ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ Π² Mozilla. Π’ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ проявили интСрСс ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ искали инструмСнт для пСрСстройки стСка Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Π½Π° Π±ΠΎΠ»Π΅Π΅ простых тСхнологиях, Ρ‡Π΅ΠΌ C++. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ создали ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ (Π²ΠΎ Π³Π»Π°Π²Π΅ с Грэйдоном) для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Rust, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ стал основой Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° Servo.

Π’ΠΎΠ³Π΄Π° Π΄Π²ΠΈΠΆΠΎΠΊ Mozilla Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡΠ΄Π΅Ρ€Π½Ρ‹ΠΌΠΈ систСмами, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠΌΠ΅Π» ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Π΅ схСмы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°. НапримСр, ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Π±Ρ‹Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ формирования содСрТимого ΠΎΠΊΠ½Π° ΠΈ запуска JavaScript. Rust ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° Π½Π° ΠΌΠΈΠ½ΠΈ-Π·Π°Π΄Π°Ρ‡ΠΈ, выполняСмыС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΈ экономящиС рСсурсы Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ процСссора.

ΠšΡ€ΠΎΠΌΠ΅ ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π° счСт распараллСливания ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Rust ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. На Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Firefox Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° C++ ΠΈ содСрТал 4,5 ΠΌΠ»Π½ строк ΠΊΠΎΠ΄Π°. C++ β€” это Β«Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉΒ» язык программирования, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ внимания ΠΊ дСталям, поэтому ошибки программистов ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ возникновСнию ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… уязвимостСй. Π—Π°Π΄Π°Ρ‡Π΅ΠΉ Rust стало сниТСниС влияния чСловСчСского Ρ„Π°ΠΊΡ‚ΠΎΡ€Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ компилятора.

Π’ 2010 Π³ΠΎΠ΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ языка смСнили ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π΄ΠΎ этого компилятор OCaml Π½Π° компилятор, написанный Π½Π° Rust. Π’ 2011 Π³ΠΎΠ΄Ρƒ Грэйдон ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ компилятор сумСл ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Β«ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒΒ» сам сСбя, Π° Π² 2012 ΠΊΠΎΠΌΠ°Π½Π΄Π° Rust объявила ΠΎ Ρ€Π΅Π»ΠΈΠ·Π΅ Π°Π»ΡŒΡ„Π°-вСрсии компилятора β€” Π΅Π³ΠΎ докумСнтация Π±Ρ‹Π»Π° Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΠΉ, Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ создания Π±ΠΈΠ»Π΄Π° оказалась Π΄Π°Π»Π΅ΠΊΠ° ΠΎΡ‚ идСальной, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π» Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка ΠΈ кросс-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ.

Π“ΠΎΠ΄Ρ‹ typesystem (2012–2014)

Наша цСлСвая аудитория β€” Β«Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ C++Β»

Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Грэйдон ΠΎΡ‚ΠΎΡˆΠ΅Π» ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Rust ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹. Как рассказываСт Π‘Ρ‚ΠΈΠ² Клабник, послС этого систСма управлСния стала Π±ΠΎΠ»Π΅Π΅ «распрСдСлСнной». Π‘Ρ‹Π»Π° сформирована фСдСративная структура, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π° измСнСния, вносимыС Π² Ρ€Π°Π·Π½Ρ‹Π΅ части ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΡ‚Π²Π΅Ρ‡Π°Π»Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Π³Ρ€ΡƒΠΏΠΏΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

Команда ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»Π° расти, ΠΈ Π² Π½Π΅ΠΉ стали ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ люди, Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π² слоТных систСмах Ρ‚ΠΈΠΏΠΎΠ². ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π°Ρ‡Π°Π»ΠΎΡΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ typesystem, ΠΈ всС большС аспСктов языка Π²Ρ‹Π½ΠΎΡΠΈΠ»ΠΈΡΡŒ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

НапримСр, Π½Π° Ρ€Π°Π½Π½ΠΈΡ… этапах Rust Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ «сборщик мусора» (GC β€” Garbage Collector), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Грэйдон Π²Π½Π΅Π΄Ρ€ΠΈΠ» для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ защищСнности памяти. Однако ΠΏΠΎΡ‚ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ надСТности с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмы Ρ‚ΠΈΠΏΠΎΠ², ΠΈ ΠΎΡ‚ GC ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ.

Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ сказалось Π½Π° систСмС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² Rust. Π”ΠΎ удалСния «сборщика мусора» Π² языкС Π±Ρ‹Π»ΠΎ Ρ‚Ρ€ΠΈ основных указатСля:

ΠŸΠ΅Ρ€ΠΈΠΎΠ΄ с 2012 ΠΏΠΎ 2014 Π³ΠΎΠ΄ β€” это врСмя, ΠΊΠΎΠ³Π΄Π° сообщСство Rust Π½Π°Ρ‡Π°Π»ΠΎ ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ. Π’ Π½Π΅ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π»ΠΎΡΡŒ Ρ‚Ρ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… «лагСря»: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ C++, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ скриптовых языков ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ программисты. Π˜Ρ… экспСртиза повлияла Π½Π° язык β€” постСпСнно ΠΎΠ½ стал ΡΠΎΡ‡Π΅Ρ‚Π°Ρ‚ΡŒ Π² сСбС ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ программирования.

Π’ ΠΌΠ°Ρ€Ρ‚Π΅ 2014 Π³ΠΎΠ΄Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π» сформирован RFC-процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ использовался для прСдставлСния Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² языкС. РСшСниС ΡΡ‚Ρ€ΠΎΠΈΠ»ΠΎΡΡŒ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π·Ρƒ ΠΈ подобию Python PEP, ΠΈ сСйчас Π² Π½Π΅ΠΌ сдСлано 3 тыс. ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Π² RFC ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ любоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π΄Π°ΠΆΠ΅ вносимоС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ. По ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Rust, Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π½ΠΎΡΠΈΡ‚ΡŒ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ измСнСния, Π½Π΅ обсудив Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ с сообщСством.

Π Π΅Π»ΠΈΠ· (2015)

ΠœΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ навСрняка, Ρ‡Ρ‚ΠΎ ΠΈΠ· этого получится

Π’ Π½Π°Ρ‡Π°Π»Π΅ 2015 Π³ΠΎΠ΄Π° Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° вСрсия Rust 1.0 Alpha. Π’ Π½Π΅ΠΉ стабилизировали ядро языка, Ρ€Π°Π·Π²ΠΈΠ»ΠΈ систСму макросов, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π·Π°ΠΊΡ€Π΅ΠΏΠΈΠ»ΠΈ Π·Π° цСлочислСнными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ int ΠΈ uint названия isize ΠΈ usize. Π’ Π½Π°Ρ‡Π°Π»Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΠ²Π°Ρ€Ρ‚Π°Π»Π° Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π³ΠΎΠ΄Π° Rust 1.0 ΠΏΠ΅Ρ€Π΅ΡˆΠ΅Π» Π² Π±Π΅Ρ‚Ρƒ β€” ΠΊ этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ crates.io ΠΈΠΌΠ΅Π» 1700 крэйтов (структурная Π΅Π΄ΠΈΠ½ΠΈΡ†Π° компиляции), Π° количСство скачиваний ΠΈΠ· рСпозитория прСвысило ΠΎΠ΄ΠΈΠ½ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½.

Π’ ΠΌΠ°Π΅ 2015 Π³ΠΎΠ΄Π° состоялся ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· β€” Rust 1.0. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°ΠΌΠ΅Π½ΠΎΠ²Π°Π»ΠΎ Π½Π°Ρ‡Π°Π»ΠΎ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° всС вносимыС измСнСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Rust Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. Он Π½Π°Ρ‡Π°Π» Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Ρ‚Π°ΠΊΠΈΡ… сфСрах, ΠΊΠ°ΠΊ game dev, Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ (ΠΌΠ°ΠΉ 2016)

Если язык Ρ…ΠΎΡ€ΠΎΡˆ лишь Π² Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠΌ, Ρ‚ΠΎ это β€” ΠΏΡ€ΠΎΠ²Π°Π»

Π’ 2015 Π³ΠΎΠ΄Ρƒ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ° StackOverflow ΠΏΡ€ΠΎΠ²Π΅Π»Π° опрос срСди Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡ… попросили ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, с ΠΊΠ°ΠΊΠΈΠΌΠΈ языками программирования ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΈ с ΠΊΠ°ΠΊΠΈΠΌΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ. Π’ΠΎΠ³Π΄Π° Rust занял Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ строчку Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Π°. Однако Π³ΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΠΎΠ½ пСрСмСстился Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ΅ мСсто β€” 79% ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ изъявили ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π½ΠΈΠΌ.

Один ΠΈΠ· Ρ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠ² Hacker News Π½Π°Π·Π²Π°Π» Π³Π»Π°Π²Π½Ρ‹ΠΌΠΈ достоинствами языка ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ простоту Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΡΡ‚ΡŒ ΠΈ Π΄ΠΎΠ±Ρ€ΠΎΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Rust-сообщСства, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ всСгда Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΏΠΎΠΌΠΎΡ‡ΡŒ с ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ особСнностСй ЯП.

ΠŸΡ€ΠΈ этом ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с этим языком ΠΈΠ·-Π·Π° Π΅Π³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² бСзопасности. Как сказал ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Reddit: Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Rust β€” это ΠΊΠ°ΠΊ ΠΏΠ°Ρ€ΠΊΡƒΡ€ со страховкой ΠΈ Π² Π·Π°Ρ‰ΠΈΡ‚Π΅; ΠΈΠ½ΠΎΠ³Π΄Π° это выглядит странно, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ‚Ρ€ΡŽΠΊΠΈ, Π½Π΅ боясь ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ сСбС Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒΒ».

Π‘ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Ρ€Π΅Π»ΠΈΠ·Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ вСрсии Rust начался ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ использования Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½. Одной ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ Rust Π² своСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, стала Mozilla. Π§Π°ΡΡ‚ΡŒ «внутрСнностСй» Firefox 45 для Linux Π±Ρ‹Π»ΠΈ пСрСписаны Π½Π° Rust, Π° начиная с вСрсии Firefox 47, Rust-ΠΊΠΎΠ΄ присутствуСт ΠΈ Π² вСрсии для Windows. Π˜Ρ… Project Quantum, анонсированный Π² октябрС 2016 Π³ΠΎΠ΄Π°, Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π² своСм составС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Servo.

Rust ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ Π² Dropbox β€” Π½Π° этом ЯП написано ядро ΠΈΡ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. Компания Dropbox создала своС Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Magic Pocket, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСнСсла ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ с Amazon S3. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π½Π° языкС Go, Π½ΠΎ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡŒ высокоС ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти ΠΈ низкая ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ повСдСния ΠΊΠΎΠ΄Π° Π½Π° Go. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π±Ρ‹Π» частично задСйствован Rust.

Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Π³ΠΎΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Rust для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² JavaScript Π½Π°Ρ‡Π°Π»ΠΈ Π² npm. Rust ΠΏΠΎΠΌΠΎΠ³ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² систСмС, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ с 350 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² дСнь. БпСциалист слуТбы ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ npm Эшли Уильямс (Ashley Williams) рассказывала ΠΎΠ± ΠΎΠΏΡ‹Ρ‚Π΅ использования Rust Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ RustFest Π² Π£ΠΊΡ€Π°ΠΈΠ½Π΅. Π’ΠΈΠ΄Π΅ΠΎ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΏΠΎ ссылкС.

Rust Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΈ ΠΌΡ‹ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Bitfury. На этом языкС программирования Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ наш Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для создания Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ΠΎΠ² Exonum. Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΌΡ‹ прСдставили ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ RustFest 2017, Π³Π΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ Π΅Ρ‘ возмоТности ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ Π²ΠΎΡ€ΠΊΡˆΠΎΠΏ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ продСмонстрировали Ρ€Π°Π±ΠΎΡ‚Ρƒ сСрвиса ΠΏΠΎ созданию ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Π»ΡŽΡ‚ (ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ руководство ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Π»ΡŽΡ‚Ρƒ Π½Π° Exonum Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ здСсь).

РСализация Π½Π° Rust оказалась кстати ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°ΠΌΠΈ. Благодаря этому ΡƒΠΌΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρ‹ Exonum ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρ‹ Ethereum (ΠΈΠ»ΠΈ Fabric). Код ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ ΠΈ Π»Π΅ΠΆΠΈΡ‚ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° GitHub.

Rust Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² сфСрС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности. Π’Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΊΠ°ΠΊ Tor ΡƒΠΆΠ΅ пСрСносят Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° Rust.

Π’ Ρ†Π΅Π»ΠΎΠΌ, сСгодня Rust Π² своих ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ 105 ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ. ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΈΡ… список (Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π° ΠΈ Bitfury Group) ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° страницС Friends of Rust Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС. И количСство ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Π½Π° Rust, постоянно увСличиваСтся, Ρ‡Π΅ΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ языка ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π΄Ρ‹.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Rust β€” ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ ΠΈ Π΄Π΅Ρ€Π·ΠΊΠΈΠΉ язык программирования

Говорят, Ρ‡Ρ‚ΠΎ это ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ C++ ΠΈ Haskell.

ΠŸΠ΅Ρ€Π²Π°Ρ вСрсия языка Rust появилась Π² 2010 Π³ΠΎΠ΄Ρƒ, ΠΈ ΠΎΠ½ сразу занял Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ строчку Π² спискС Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… языков Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π° StackOverflow. Π“ΠΎΠ΄ спустя Rust Π²ΠΎΠ·Π³Π»Π°Π²ΠΈΠ» этот список ΠΈ дСрТался Ρ‚Π°ΠΌ нСсколько Π»Π΅Ρ‚. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΏΠΎΡ‡Π΅ΠΌΡƒ этот язык стал Ρ‚Π°ΠΊΠΈΠΌ популярным, Π² Ρ‡Ρ‘ΠΌ Π΅Π³ΠΎ особСнности ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠΊΡ€ΡƒΠ³ Π½Π΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ споров.

Π’ Ρ‡Ρ‘ΠΌ идСя языка Rust

Автору языка Π½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ всСмогущСство языка C++ ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ Haskell. Он поставил ΠΏΠ΅Ρ€Π΅Π΄ собой Π·Π°Π΄Π°Ρ‡Ρƒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ±Π° этих ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² ΠΎΠ΄Π½ΠΎΠΌ языкС, ΠΈ Π·Π° нСсколько Π»Π΅Ρ‚ ΠΎΠ½ собрал ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ языка Rust.

Rust позиционируСтся ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ систСмный ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ язык высокого уровня. БСйчас поясним, Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚.

👉 ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ готовая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° β€” это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π° любом ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ с Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой. Для запуска Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ компилятор, достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ скомпилированная вСрсия ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΠ»Π° ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ.

👉 БистСмный β€” это ΠΊΠΎΠ³Π΄Π° Π½Π° языкС ΠΏΠΈΡˆΡƒΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы Π² Ρ†Π΅Π»ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ ΠΈ слуТСбныС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Rust β€” ΠΎΡ‚ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π° Π΄ΠΎ систСмы управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. БистСмный язык позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ быстрыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ всС возмоТности ΠΆΠ΅Π»Π΅Π·Π°.

👉 ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π² языкС ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‚ΡΡ нСсколько ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ программирования. Π’ случаС Rust это ООП, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ, ООП Π² Rust ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΠΈΠ· C++, Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ β€” ΠΈΠ· Haskell. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ сам Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ стилС ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ ΡΠΎΠ²ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ Π² Ρ€Π°Π·Π½Ρ‹Ρ… элСмСнтах ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Бинтаксис ΠΈ ΠΊΠΎΠ΄

Π—Π° основу синтаксиса Π² Rust взят синтаксис ΠΈΠ· C ΠΈ C++.НапримСр, классичСский Β«ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!Β» Π½Π° Rust выглядит Ρ‚Π°ΠΊ:

fn main() <
println!(«Hello, world!»);
>

Если Π²Ρ‹ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ синтаксисом, Ρ‚ΠΎ смоТСтС быстро Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ Π½Π° Rust. Π”Ρ€ΡƒΠ³ΠΎΠ΅ Π΄Π΅Π»ΠΎ, Ρ‡Ρ‚ΠΎ Π² Rust Π΅ΡΡ‚ΡŒ свои особСнности:

let x = if new_game() < 4 >
else if reload() < 3 >
else

ПослСднСС Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ записи пСрСмСнная x Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘ΠΌ, Ссли функция new_game() Π²Π΅Ρ€Π½Ρ‘Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true. Если этого Π½Π΅ случится, компилятор Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ reload() ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ. Если true, Ρ‚ΠΎ x ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3, Π° Ссли ΠΈ это Π½Π΅ сработаСт β€” Ρ‚ΠΎ x станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 0.

Π•Ρ‰Ρ‘ Π² Rust Π΅ΡΡ‚ΡŒ сравнСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ. Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, с ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ совпало Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, выполнится Ρ‚Π° ΠΈΠ»ΠΈ иная функция:

Главная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Rust

НСсмотря Π½Π° синтаксис, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° C, Π³Π»Π°Π²Π½ΡƒΡŽ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Rust Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ взяли ΠΈΠ· Haskell, ΠΈ Π·Π²ΡƒΡ‡ΠΈΡ‚ ΠΎΠ½Π° Ρ‚Π°ΠΊ:

Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° Rust ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ ΠΈ Π½Π΅ ΡƒΠΏΠ°Π»Π° Π²ΠΎ врСмя запуска, Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹ сами Π΅Ρ‘ Π½Π΅ остановитС.

Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Rust ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Haskell. ΠŸΠΎΡ‡Ρ‚ΠΈ β€” ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ссли программист ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ «нСбСзопасный» Π±Π»ΠΎΠΊ unsafe, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Ρ‘Ρ‚ Π΅ΠΌΡƒ прямой доступ ΠΊ памяти, Ρ‚ΠΎ Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ это ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сбоям. Но Π΄Π°ΠΆΠ΅ с Ρ‚Π°ΠΊΠΈΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Rust стараСтся ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ сам ΠΈ ΠΏΠ°Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π±Π΅Π·Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹Ρ… случаях.

ΠŸΠ»ΡŽΡΡ‹ ΠΈ минусы языка

Когда язык совмСщаСт Π² сСбС нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ прСимущСств ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…:

ΠœΠΈΠ½ΡƒΡΡ‹ Π² основном связаны со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ развития языка. Π’Π°ΠΊ ΠΊΠ°ΠΊ Rust развиваСтся ΠΎΡ‡Π΅Π½ΡŒ быстро, Ρ‚ΠΎ часто Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ· старой вСрсии Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии. Π•Ρ‰Ρ‘ ΠΊ минусам ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ:

Π§Ρ‚ΠΎ написано Π½Π° Rust

Π§Π°Ρ‰Π΅ всСго Rust ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π² Ρ‚Π΅Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, Π³Π΄Π΅ Π½ΡƒΠΆΠ½Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ высокой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΈ ΠΎΠ±Ρ‰Π΅Π΅ быстродСйствиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Rust ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ОБ, Π²Π΅Π±-сСрвСров, систСмных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, Π²Π΅Π±-Π΄Π²ΠΈΠΆΠΊΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ для создания ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… частСй Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° ΠΈ бэкСнда. НапримСр, Π²ΠΎΡ‚ самыС извСстныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, Π³Π΄Π΅ Rust Π±Ρ‹Π» основным языком программирования:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ возмоТности Rust

Rust β€” Π½ΠΎΠ²Ρ‹ΠΉ язык программирования, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠ΅ΠΉ Mozilla. Главная Ρ†Π΅Π»ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² β€” созданиС бСзопасного ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎΠ³ΠΎ языка для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… вычислСний. ΠŸΠ΅Ρ€Π²Π°Ρ вСрсия языка Π±Ρ‹Π»Π° написана Грэйдоном Π₯ΠΎΡ€ΠΎΠΌ Π² 2006 Π³ΠΎΠ΄Ρƒ, Π° Π² 2009 Π³ΠΎΠ΄Ρƒ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»Π°ΡΡŒ Mozilla. Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ измСнСния ΠΏΡ€Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π» ΠΈ сам компилятор, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ написанный Π½Π° OCaml: ΠΎΠ½ Π±Ρ‹Π» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ пСрСписан Π½Π° Rust с использованиСм LLVM Π² качСствС back-end.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ Π½Π° Rust, являСтся Π½ΠΎΠ²Ρ‹ΠΉ Π²Π΅Π±-Π΄Π²ΠΈΠΆΠΎΠΊ Servo, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ вСдСтся Mozilla. Π’ 2013 Π³ΠΎΠ΄Ρƒ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Rust ΠΈ Servo ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»Π°ΡΡŒ корпорация Samsung Electronics, ΠΏΡ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ участии ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠ΄ Π΄Π²ΠΈΠΆΠΊΠ° Servo Π±Ρ‹Π» ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° ARM Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° языка ΡΡ‚ΠΎΠ»ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌΠΈ ΠΈΠ³Ρ€ΠΎΠΊΠ°ΠΌΠΈ IT индустрии Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ€Π°Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΄Π°Π΅Ρ‚ Π½Π°Π΄Π΅ΠΆΠ΄Ρƒ Π½Π° Π΅Π³ΠΎ дальнСйшСС Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅.

ЦСлСвая аудитория

Π‘Π½Π°Ρ‡Π°Π»Π° я ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Π²ΠΎΠ΄Π½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ, которая Π±Ρ‹ рассматривала язык с самых основ, начиная с объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ заканчивая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ возмоТностями ΠΈ особСнностями ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π±Ρ‹ ΠΎΡ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΡŽ, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΡΡ‚Π°Ρ‚ΡŒΡ с ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ содСрТаниСм Π±Ρ‹Π»Π° Π±Ρ‹ нСинтСрСсна людям, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с языками Ρ‚ΠΈΠΏΠ° C++ ΠΈΠ»ΠΈ Java, ΠΈ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Π±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Π½Π΅Π΅ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· основных особСнностСй Rust, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я Ρ€Π΅ΡˆΠΈΠ» Π½Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ созданиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ†ΠΈΠΊΠ»Ρ‹, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, замыкания ΠΈ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ понятно ΠΈΠ· ΠΊΠΎΠ΄Π°. Основная масса Π½Π΅ совсСм ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… особСнностСй Π±ΡƒΠ΄Π΅Ρ‚ описана ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости, Π² процСссС Ρ€Π°Π·Π±ΠΎΡ€Π° основных возмоТностСй Rust. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΡΡ‚Π°Ρ‚ΡŒΡ посвящСна описанию Π΄Π²ΡƒΡ… ΠΈΠ· Ρ‚Ρ€Π΅Ρ… основных возмоТностСй языка: бСзопасной Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ написанию ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. К соТалСнию, Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания ΡΡ‚Π°Ρ‚ΡŒΠΈ сСтСвая подсистСма Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π»ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ описания Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π΅ΠΉ Π² ΡΡ‚Π°Ρ‚ΡŒΡŽ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ бСссмыслСнным.

ВСрминология

По Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ счСту, это ΠΎΠ΄Π½Π° ΠΈΠ· Π΄Π²ΡƒΡ…-Ρ‚Ρ€Π΅Ρ… доступных статСй, посвящСнных Rust, Π½Π° русском языкС, поэтому ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡƒΡΡ‚ΠΎΡΠ²ΡˆΠ΅ΠΉΡΡ русской Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π½Π΅Ρ‚ ΠΈ ΠΌΠ½Π΅ приходится Π±Ρ€Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящиС эквивалСнты, ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ языкам программирования. Для удобства дальнСйшСго чтСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ статСй Π½Π° английском языкС ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ появлСнии русскоязычного Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° Π² скобках приводится английский эквивалСнт.

НаибольшСС количСство ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²Ρ‹Π·Π²Π°Π»ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Box ΠΈ Pointer. По своим свойствам Ρ‡Ρ‚ΠΎ Box, Ρ‡Ρ‚ΠΎ Pointer большС всСго Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ ΡƒΠΌΠ½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ· C++, поэтому я Ρ€Π΅ΡˆΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈΒ». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Owned boxes ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ Π² Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Π° Borrowed pointers Π²ΠΎ Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

Π Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ – это пСрвая ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… возмоТностСй Rust, которая Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ этот язык ΠΊΠ°ΠΊ ΠΎΡ‚ языков с ΠΏΠΎΠ»Π½Ρ‹ΠΌ доступом ΠΊ памяти (Ρ‚ΠΈΠΏΠ° C++), Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚ языков с ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ Π·Π° ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ со стороны GC (Ρ‚ΠΈΠΏΠ° Java). Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, с ΠΎΠ΄Π½ΠΎΠΉ стороны, Rust прСдоставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π³Π΄Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, вводя Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ обСспСчивая ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π·Π° ΠΈΡ… использованиСм Π½Π° этапС компиляции. C Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ подсчСта ссылок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ вСрсии языка Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΌ GC, обСспСчиваСт автоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСсурсами.

ИспользованиС стСка

Π’Π°ΠΊ, ΠΊΠΎΠ΄ (1) размСстит ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Point Π½Π° стСкС Π·Π°Π΄Π°Ρ‡ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½. ΠŸΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (2) Π±ΡƒΠ΄Π΅Ρ‚ скопирован Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ x, Π° вся структура Ρ‚ΠΈΠΏΠ° Point.

Для ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ: ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

Как ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Ρ‹ΡˆΠ΅, ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово let ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Rust для создания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ константныС ΠΈ для создания измСняСмой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово mut. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, созданиС измСняСмой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° Point ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ let mut x = Point ;.

ΠšΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎ константными ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈ Π·Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°ΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… Β«ΠΎΠ±ΠΌΠ°Π½ΠΎΠΌΒ» ΠΏΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½ΠΎ слСдит компилятор.

Π’Π°ΠΊ, Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ (1) ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ Π½Π° константныС Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ Π²ΠΎΡ‚ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° (2) ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сами Π΄Π°Π½Π½Ρ‹Π΅ закончится ошибкой Π½Π° этапС компиляции. А Π²ΠΎΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, хранящСй адрСс константного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Point ΠΈ созданной Ρ€Π°Π½Π΅Π΅, являСтся допустимым (3).

РаздСляСмыС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

РаздСляСмыС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π² локальной ΠΊΡƒΡ‡Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π΅ΡΡ‚ΡŒ собствСнная локальная ΠΊΡƒΡ‡Π°, ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° располоТСнныС Π² Π½Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π·Π° Π΅Π΅ ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹. Для создания раздСляСмых ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ @

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ стСковых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ копируСтся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π° Π½Π΅ Π΄Π°Π½Π½Ρ‹Π΅. ИмСнно ΠΈΠ· этого свойства ΠΈ пошло Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΡ… ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° shared_ptr ΠΈΠ· языка C++.

Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ структуру, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° собствСнный Ρ‚ΠΈΠΏ (классичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ – односвязный список). Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ компилятор Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² Ρ‚ΠΈΠΏ Option (1).

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ сСмантику владСния, благодаря Ρ‡Π΅ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π°Π΄Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ навСрняка Π½Π°ΠΉΠ΄ΡƒΡ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ‡Π΅Ρ€Ρ‚Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ указатСлями Rust ΠΈ классом unique_ptr ΠΈΠ· STL.

ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ (1) ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ new_p указатСля p ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ new_p Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° созданный Ρ€Π°Π½Π΅Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Point, Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ p дСинициализируСтся. Π’ случаС ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ (2) компилятор Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ use of moved value ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ копию ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ вмСсто присвоСния указатСля с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π΄Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ исходного.

Благодаря явному созданию ΠΊΠΎΠΏΠΈΠΈ (1), new_p ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° копию созданного Ρ€Π°Π½Π΅Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° Point, Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ p Π½Π΅ измСняСтся. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΊ структурС Point ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ clone, структура Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ объявлСна с использованиСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° #[deriving(Clone)].

Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ – ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹ΠΉ Π² любом ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² памяти: стСкС, локальном ΠΈΠ»ΠΈ Ρ…ΠΈΠΏΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ‡Π»Π΅Π½ любой структуры Π΄Π°Π½Π½Ρ‹Ρ…. На физичСском ΡƒΡ€ΠΎΠ²Π½Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ Π‘ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ, ΠΊΠ°ΠΊ слСдствиС, Π½Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ сборщиком мусора ΠΈ Π½Π΅ привносят Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, ΠΈΡ… основным ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΠΎΡ‚ Π‘ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π½Π° этапС компиляции для Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ возмоТности бСзопасного использования. Для создания Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ &

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Point Π±Ρ‹Π» создан (1) Π½Π° стСкС ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π±Ρ‹Π» сохранСн Π² on_the_stack. Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ:

Π’ΠΈΠΏΡ‹, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‚ стСковых, приводятся ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ указатСлям автоматичСски, Π±Π΅Π· использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° взятия адрСса, Ρ‡Ρ‚ΠΎ позволяСт ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ написаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (1), Ссли Ρ‚ΠΈΠΏ указатСля Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ нСбольшая ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ элСмСнт структуры Π΄Π°Π½Π½Ρ‹Ρ….

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ довольно объСмная ΠΈ Π½Π΅ совсСм ΡƒΡΡ‚ΠΎΡΠ²ΡˆΠ°ΡΡΡ Ρ‚Π΅ΠΌΠ°. ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ с Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ознакомится Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Rust Borrowed Pointers Tutorial ΠΈ Lifetime Notation.

Π Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

Для доступа ΠΊ значСниям, адрСсованным ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ разымСнования (Dereferencing pointers). ΠŸΡ€ΠΈ доступС ΠΊ полям структурированных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ производится автоматичСски.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ указатСлями

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ сразу послС Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Rust Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: «Как ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, адрСсуСмый ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ указатСля, ΠΊ раздСляСмому ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚?Β» ΠžΡ‚Π²Π΅Ρ‚ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ вопрос ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΈ ΠΏΠΎΠ½Π°Ρ‡Π°Π»Ρƒ нСсколько ΠΎΠ±Π΅ΡΠΊΡƒΡ€Π°ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ: Π½ΠΈΠΊΠ°ΠΊ. Если Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Π½Π°Π΄ Π½ΠΈΠΌ, Ρ‚ΠΎ становится ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ срСдств ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ прСобразования Π½Π΅Ρ‚ ΠΈ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ находятся Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΡƒΡ‡Π°Ρ… ΠΈ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π³Ρ€Π°Ρ„Ρ‹ зависимостСй, автоматичСскоС отслСТиваниС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΏΡ€ΠΈ нСобходимости прСобразования ΠΌΠ΅ΠΆΠ΄Ρƒ указатСлями, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся Π½ΠΈ Ρ‡Π΅ΠΌ ΠΈΠ½Ρ‹ΠΌ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΡƒΡ‡Π°ΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², для Ρ‡Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ сСриализациСй.

Π—Π°Π΄Π°Ρ‡ΠΈ

Вторая ΠΊΠ»ΡŽΡ‡Π΅Π²Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Rust – написаниС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ ΠΏΠ»Π°Π½Π΅ возмоТностСй для написания ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Rust Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Erlang с Π΅Π³ΠΎ модСлью Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ сообщСниями ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ΠΈ Limbo с Π΅Π³ΠΎ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ. ΠŸΡ€ΠΈ этом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ прСдоставляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ: Ρ…ΠΎΡ‡Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ сообщСния ΠΈΠ»ΠΈ просто ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. А ΠΏΡ€ΠΈ совмСстной Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ доступ ΠΎΠ΄ΠΈΠ½-ΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ-ΠΌΠ½ΠΎΠ³ΠΎ-Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ. Для создаваСмых Π·Π°Π΄Π°Ρ‡ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящий ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнный.

Для ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ: do-синтаксис

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ описанию Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с do-синтаксисом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Rust для упрощСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ с функциями Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ each, ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰ΡƒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ (1) Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· элСмСнтов массива Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ op.

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ each, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ do-синтаксис (1), ΠΌΠΎΠΆΠ½ΠΎ вывСсти Π½Π° экран ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· элСмСнтов массива, Π½Π΅ забывая ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² лямбду Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π½Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ (2) для доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ:

Π’Π°ΠΊ ΠΊΠ°ΠΊ do-синтаксис являСтся синтаксичСским сахаром, Ρ‚ΠΎ запись Π½ΠΈΠΆΠ΅ эквивалСнтна записи с использованиСм do-синтаксиса.

Запуск Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Π² Rust ΠΎΡ‡Π΅Π½ΡŒ просто. Код, относящийся ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, сосрСдоточСн Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ std::task, Π° ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌ способом создания ΠΈ старта Π·Π°Π΄Π°Ρ‡ΠΈ являСтся Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ spawn ΠΈΠ· этого модуля.

Ѐункция spawn ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ запускаСт Π΅Π³ΠΎ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ (Π½Π΅ стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡ΠΈ Π² Rust Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π·Π΅Π»Π΅Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²). Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выполняСтся ΠΊΠΎΠ΄, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ get_task() ΠΈΠ· модуля task. Π‘ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π·Π°Π΄Π°Ρ‡ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ замыкания, Π½Π΅ слоТно ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ 3 способа Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: ΠΏΠ΅Ρ€Π΅Π΄Π°Π² адрСс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (1), создав Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ Β«Π½Π° мСстС» (2) ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π΅Ρ€Π½ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠΈ языка, воспользовавшись do-синтаксисом (3).

ВзаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ
ОбмСн сообщСниями Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅

Π‘Π°ΠΌΡ‹ΠΌ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ способом взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ являСтся ΠΌΠΎΠ΄ΡƒΠ»ΡŒ std::comm. Код ΠΈΠ· std::comm Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ‚Π»Π°ΠΆΠ΅Π½, Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ довольно прост Π² использовании. Основой ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями std::comm ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, манипуляция с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ происходит посрСдством ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ². ΠŸΠΎΡ‚ΠΎΠΊ прСдставляСт собой ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ связи, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΡ€Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСния, Π° ΠΊΠ°Π½Π°Π» – для ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΏΠΎΡ‚ΠΎΠΊΠ° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ внимания заслуТиваСт класс шаблонного ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Send, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… пСрСсылку Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.

Для получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ recv(), которая Π»ΠΈΠ±ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, Π»ΠΈΠ±ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ Π΄ΠΎ ΠΈΡ… появлСния. Глядя Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅, закрадываСтся ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ бСсполСзСн, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ практичСского смысла Π² ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ сообщСний ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅Ρ‚. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ стоит ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹ΠΌ Π²Π΅Ρ‰Π°ΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ использованиС ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Π½Π° Ρ‡Ρ‚ΠΎ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ значСния, адрСсуСмыС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ указатСлями, Π° функция from_fn() (1) ΠΊΠ°ΠΊ Ρ€Π°Π· создаСт Ρ‚Π°ΠΊΠΎΠΉ массив. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡ‚ΠΎΠΊ являСтся ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ, Ρ‚ΠΎ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ запроса (2) ΠΈ получСния ΠΎΡ‚Π²Π΅Ρ‚Π° (3) понадобятся Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ recv() Π΄Π°Π½Π½Ρ‹Π΅ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° (4), Π° ΠΏΡ€ΠΈ отсутствии Ρ‚Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ Π΄ΠΎ ΠΈΡ… появлСния. Для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция send() (5), принадлСТащая Π½Π΅ сСрвСрному, Π° клиСнтскому ΠΏΠΎΡ‚ΠΎΠΊΡƒ; Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сСрвСрной Π·Π°Π΄Π°Ρ‡Π΅: ΠΎΠ½ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ (6) ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ send(), относящСйся ΠΊ сСрвСрному ΠΏΠΎΡ€Ρ‚Ρƒ. Π’ самом ΠΊΠΎΠ½Ρ†Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ сСрвСрной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, считываСтся (7) ΠΈΠ· клиСнтского ΠΏΠΎΡ‚ΠΎΠΊΠ°.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний сСрвСру ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ° сообщСний Π½Π° сторонС сСрвСра ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΡ‚ΠΎΠΊ server_chan, server_port. Π’ силу однонаправлСнности ΠΏΠΎΡ‚ΠΎΠΊΠ°, для получСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° вычислСний сСрвСра Π±Ρ‹Π» создан клиСнтский ΠΏΠΎΡ‚ΠΎΠΊ, состоящий ΠΈΠ· ΠΏΠ°Ρ€Ρ‹ client_chan, client_port.

БовмСстноС использованиС ΠΏΠΎΡ‚ΠΎΠΊΠ°

Π₯отя ΠΏΠΎΡ‚ΠΎΠΊ являСтся ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, это Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСобходимости ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ сущСствуСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Β«ΠΎΠ΄ΠΈΠ½-ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ-ΠΌΠ½ΠΎΠ³ΠΎ-ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»Π΅ΠΉΒ».

Для этого, ΠΊΠ°ΠΊ ΠΈ для схСмы Β«ΠΎΠ΄ΠΈΠ½-Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ-ΠΎΠ΄ΠΈΠ½-ΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΒ», Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сСрвСрный (2) ΠΈ клиСнтский (3) ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ (3). Π›ΠΎΠ³ΠΈΠΊΠ° сСрвСрной Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ проста: ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ (5) Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· сСрвСрного ΠΊΠ°Π½Π°Π»Π°, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ (9), вывСсти сообщСниС ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ запроса Π½Π° экран ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ количСство ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… запросов print_hello (5) Π² клиСнтский ΠΏΠΎΡ‚ΠΎΠΊ. Π’Π°ΠΊ ΠΊΠ°ΠΊ писатСлСй нСсколько, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ внСсти измСнСния Π² Ρ‚ΠΈΠΏ сСрвСрного ΠΏΠΎΡ€Ρ‚Π°, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π² (7) Π΅Π³ΠΎ ΠΊ SharedChan вмСсто Chan, ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· писатСлСй ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ копию ΠΏΠΎΡ€Ρ‚Π° (8) посрСдствам ΠΌΠ΅Ρ‚ΠΎΠ΄Π° clone(). Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ°Ρ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠΎΡ€Ρ‚ΠΎΠΌ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°: ΠΌΠ΅Ρ‚ΠΎΠ΄ send() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… сСрвСру (9) с Ρ‚ΠΎΠΉ лишь Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

ΠšΡ€ΠΎΠΌΠ΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ способ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² сообщСний ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… задаСтся Π½Π° этапС компиляции, для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈΠ±ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ сСрриализациСй с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ описан Π½ΠΈΠΆΠ΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²Β»), Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ пСрСчислСниС (1). По своим свойствам пСрСчислСния Π² Rust ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° объСдинСния ΠΈΠ· языка C ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏ Variant, Π² Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ всСх высокоуровнСвых языках программирования.

ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Π’ Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°Ρ‚ΡŒ значСния, адрСсуСмыС ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ указатСлями, становится ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ flatpipes. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ позволяСт ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ массива ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с flatpipes ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ просто. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ посрСдством flatpipes, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ объявлСна сСриализуСмой (1) ΠΈ дСсСриализуСмой (2). Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ flatpipes (3) тСхничСски Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ создания ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ΅ΠΌ (4) ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° (5) сообщСний ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠ°Π½Π°Π»Π° ΠΈ ΠΏΠΎΡ€Ρ‚Π°. Π“Π»Π°Π²Π½Ρ‹ΠΌ ΠΆΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ flatpipes ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠ° являСтся созданиС Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ сторонС ΠΈ построСниС Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ сторонС. Благодаря Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ, Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с flatpipes, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‚, Π½ΠΎ возмоТности ΠΏΠΎ пСрСсылкС Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ.

ВысокоуровнСвая абстракция ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°: ΠΎΠ΄ΠΈΠ½ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° сСрвСр, Π²Ρ‚ΠΎΡ€ΠΎΠΉ для получСния Π΄Π°Π½Π½Ρ‹Ρ… с сСрвСра. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π΅ привносит ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·Ρ‹ Π΄Π° ΠΈ просто замусориваСт ΠΊΠΎΠ΄. Π’ связи с этим Π±Ρ‹Π» создан ΠΌΠΎΠ΄ΡƒΠ»ΡŒ extra::comm, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ высокоуровнСвой абстракциСй Π½Π°Π΄ std::comm ΠΈ содСрТащий Π² сСбС DuplexStream, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π‘Π°ΠΌΠΎ собой, Ссли Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² исходный ΠΊΠΎΠ΄ DuplexStream, станСт ясно, Ρ‡Ρ‚ΠΎ это Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ удобная надстройка Π½Π°Π΄ ΠΏΠ°Ρ€ΠΎΠΉ стандартных ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с DuplexStream создаСтся (1) СдинствСнная ΠΏΠ°Ρ€Π° ΠΈΠ· Π΄Π²ΡƒΡ… Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΎΠ±Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΈ для получСния сообщСний. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ server захватываСтся контСкстом Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния (2) ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ (3) сообщСний Π² Π·Π°Π΄Π°Ρ‡Π΅ сСрвСра, Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ client – Π² Π·Π°Π΄Π°Ρ‡Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (4,5). ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с DuplexStream Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, Π½ΠΎ позволяСт ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ количСство Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Arc
БовмСстноС использованиС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ с доступом Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ классу Send, ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ Π² случаС с ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ, Π½ΠΎ Π΅Ρ‰Π΅ ΠΈ ΠΊ классу Freeze, Ρ‡Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ отсутствиС ΠΊΠ°ΠΊΠΈΡ… Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ измСняСмых ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° измСняСмыС поля Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° T (Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Rust носят Π½Π°Π·Π²Π°Π½ΠΈΠ΅ deeply immutable objects).

ΠŸΡƒΡΡ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, Π½ΠΎ ΠΎΠ½ Π²ΠΏΠΎΠ»Π½Π΅ достаточСн для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Arc, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ наглядно дСмонстрируСт основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» этого модуля – Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π’Π°ΠΊ, для совмСстного использования ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ массива, ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ³ΠΎ Π² Arc (1), Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ»ΠΎΠ½ Arc ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ (2), Ρ‡Ρ‚ΠΎ сдСлаСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠ°ΠΊ ΠΈΠ· Π½ΠΎΠ²ΠΎΠΉ (3), Ρ‚Π°ΠΊ ΠΈ ΠΈΠ· основной (4) Π·Π°Π΄Π°Ρ‡.

R/W доступ ΠΊ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ указатСлям

ΠœΠΎΠ΄ΡƒΠ»ΡŒ RWArc Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρƒ мСня двоякиС эмоции. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, благодаря RWArc ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΎ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Π΅Π½Π½ΡƒΡŽ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ β€œΠΌΠ½ΠΎΠ³ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΠ΄ΠΈΠ½ ΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒβ€, Ρ‡Ρ‚ΠΎ, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ концСпция ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстна. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, совмСстный доступ ΠΊ памяти, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π½Π΅ RO доступ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» описан Ρ‡ΡƒΡ‚ΡŒ Ρ€Π°Π½Π΅Π΅, Π° RW доступ, Ρ‡Ρ€Π΅Π²Π°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ с Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Rust ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π›ΠΈΡ‡Π½ΠΎ для сСбя я ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π²Ρ‹Π²ΠΎΠ΄Ρƒ: ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Π·Π½Π°Ρ‚ΡŒ Π½Π°Π΄ΠΎ, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π±Π΅Π· ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ нСобходимости Π½Π΅ стоит.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаСтся (1) массив, ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ Π² RWArc, благодаря Ρ‡Π΅ΠΌΡƒ ΠΊ Π½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ (4), Ρ‚Π°ΠΊ ΠΈ Π½Π° запись (6). ΠšΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с RWArc ΠΎΡ‚ всСх ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² – использованиС Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΉ Π² функциях read() (3) ΠΈ write() (5) Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚Ρ‹Ρ… Π² RWArc, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² этих функциях. И, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ копию (2) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для доступа ΠΊ Π½Π΅ΠΌΡƒ ΠΈΠ· замыкания, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» станСт нСдоступным.

Как Ρ‚Π°ΠΊΠΎΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ?

Π”Π°, ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ вопрос Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡƒΠ·Π½Π°Π΅ΡˆΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Arc ΠΈ RWArc ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Rust. На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд ΠΎΠ½ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡Π°Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² Rust Π² Ρ†Π΅Π»ΠΎΠΌ, ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π² частности. НС являясь создатСлСм ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ языка, я ΠΌΠΎΠ³Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ лишь Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, благодаря Ρ‡Π΅ΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π’ составС языка Rust имССтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово unsafe, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ нСбСзопасныС с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ malloc, free, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π΄Ρ€Π΅ΡΠ½ΡƒΡŽ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ. ИмСнно эта Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠ±Ρ…ΠΎΠ΄Π° встроСнной Π² Rust Π·Π°Ρ‰ΠΈΡ‚Ρ‹ памяти ΠΈ обСспСчСния совмСстного доступа ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. Π’Π΅ΡΡŒ ΠΊΠΎΠ΄, относящийся ΠΊ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ Β«COMPLETELY UNSAFEΒ» ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

ВмСсто Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Π₯отя прямо сСйчас язык Rust Π½Π΅ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½ для ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ использования, Π½Π° ΠΌΠΎΠΉ взгляд, ΠΎΠ½ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ большим ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΠΎΠΌ. ΠžΡ‡Π΅Π½ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Ρ€Π΅Π· нСсколько Π»Π΅Ρ‚ Rust смоТСт ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΡŽ Ρ‚Π°ΠΊΠΈΠΌ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ языкам-Π΄ΠΈΠ½ΠΎΠ·Π°Π²Ρ€Π°ΠΌ, ΠΊΠ°ΠΊ C ΠΈ C++, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π² областях, связанных с написаниСм сСтСвых ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΌ случаС, я ΠΎΡ‡Π΅Π½ΡŒ Π½Π° это надСюсь.

Π§Ρ‚ΠΎ касаСтся ΡΡ‚Π°Ρ‚ΡŒΠΈ, Ρ‚ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½ΠΎΠΉ, скорСС всСго, нСльзя: Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, синтаксис языка навСрняка ΠΏΡ€Π΅Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ Π΅Ρ‰Π΅ ряд ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π°, Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ Ρ‚Ρ€Π΅Ρ‚Π΅ΠΉ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… возмоТностСй языка – ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ сСтСвых взаимодСйствий. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ эта Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ Π² Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠ΅ состояниС, я ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎ Π½Π΅ΠΉ Π½Π°ΠΏΠΈΡˆΡƒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *