Ang awtomatikong pamamahala ng memorya ng Rust ay nagpapalaya sa developer mula sa pagmamanipula ng pointer at pinoprotektahan laban sa mga problemang nagmumula sa mababang antas ng pagmamanipula ng memorya, tulad ng mga after-free na pag-access sa memorya, null pointer dereferences, buffer overruns, at iba pa. Ang isang manager ng package ay binuo upang ipamahagi ang mga aklatan, tiyakin ang pagpupulong at pamahalaan ang mga dependency ng proyekto.
Ang pangunahing
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ ΡΠΈΠΏΠ°ΠΆ (trait)
Hinaharap , ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ΡΡ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΎΠ² async / .await. ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Future Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΡΠΎΠΊΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, ΠΏΠΎΠΏΡΡΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ; - Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
alloc , ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΠΌΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌΡΠΌΠΈ Π² ΠΏΠ°ΠΌΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ»Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π² std ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΈΠΏIsang bagay , ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΡΡΡΡ ΠΈΠ· alloc. ΠΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ alloc ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΊ std (Β«#![no_std]Β»), Π° ΡΠ°ΠΊΠΆΠ΅ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ , ΡΠ°ΡΡΡΠΈΡΠ°Π½Π½ΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π±Π΅Π· std; - ΠΠ»Ρ ΠΎΠ±Ρ
ΠΎΠ΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
iminungkahi ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΡΠΈΠΏSiguroUnit , ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ mem::uninitialized, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ. Π€ΡΠ½ΠΊΡΠΈΡ mem::uninitialized ΡΠ΄ΠΎΠ±Π½Π° Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Π½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π² Π·Π°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½ΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°ΡΡΡΡ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ. MaybeUninit ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ, ΡΡΠ΅ΡΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ΅ Ρ ΡΡΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠ΅ΡΠ΅Π· Β«maybe_t:Β» ΠΈ ΠΏΠΎΡΡΠ°ΠΏΠ½ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠ΅ΡΠΊΠΎΠΉ Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π²ΡΠ·ΠΎΠ²Π° Β«.assume_init()Β». Π‘ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ MaybeUninit ΡΡΠ½ΠΊΡΠΈΡ mem::uninitialized ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π° Π² ΡΠ°Π·ΡΡΠ΄ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΠΈ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π° ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ; - Π’Π΅Ρ Π½ΠΈΠΊΠ° NLL (Non-Lexical Lifetimes), ΡΠ°ΡΡΠΈΡΠΈΠ²ΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΡΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Π΄Π»Ρ ΡΠ·ΡΠΊΠ° Rust 2015 (ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ NLL ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Rust 2018). ΠΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ Π½Π° Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅, NLL ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π½Π°Π±ΠΎΡΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π² Π³ΡΠ°ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (borrow checker) ΠΈ Π΄ΠΎΠΏΡΡΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²ΠΈΠ΄ΠΎΠ² ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°Π½Π΅Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΎΡΠ»Π°Π΄ΠΊΡ;
- ΠΠΊΠ»ΡΡΠ΅Π½Π° Π½ΠΎΠ²Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
HashMap , ΠΎΡΠ½ΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡΡΡΠΊΡΡΡΡSwiss Table (Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡhashbrown::HashMap , Π΅ΡΠ»ΠΈ ΡΠ²Π½ΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, std::HashMap, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° SipHash 1-3). ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΡΡΠ°Π»ΡΡ ΠΏΡΠ΅ΠΆΠ½ΠΈΠΌ, Π° Π·Π°ΠΌΠ΅ΡΠ½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΎΡΠ»ΠΈΡΠΈΡ ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΊ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ; - Π ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ cargo
idinagdag ΠΎΠΏΡΠΈΡ Β«βofflineΒ», Π²ΠΊΠ»ΡΡΠ°ΡΡΠ°Ρ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ Π±Π΅Π· ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ΅ΡΠΈ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ. ΠΡΠ»ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΡΡΠ΅, ΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½Π° ΠΎΡΠΈΠ±ΠΊΠ°. ΠΠ»Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠΌ Π² offline ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«cargo fetchΒ»; - Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ°ΠΊΡΠΎΡΠ° Β«dbg!Β» Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²;
- ΠΡΠΈΠ·Π½Π°ΠΊ Β«constΒ», ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ½ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²
Layout::from_size_align_unchecked,
mem::needs_drop,
NonNull::dangling ΠΈ
NonNull::cast; - Ang isang bagong bahagi ng mga API ay inilipat sa stable na kategorya, kabilang ang mga pamamaraan na na-stabilize
task::Waker, task::Poll,
VecDeque::rotate_left, VecDeque::rotate_right,
Read::read_vectored, Write::write_vectored,
Iterator::copied,
BorrowMut (Π΄Π»Ρ ΡΡΡΠΎΠΊ) ΠΈ str::as_mut_ptr.
Pinagmulan: opennet.ru