ΠΠΊΠΈΠΏΡΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Ρ ΡΠ°Π΄ΠΎΡΡ Π²ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Ρ Rust 1.36!
ΠΠ°ΠΊΠ²ΠΎ Π΅ Π½ΠΎΠ²ΠΎΡΠΎ Π² Rust 1.36?
Π ΡΠ΅Π³Π° ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ:
- Π Rust 1.36 Π½Π°ΠΉ-Π½Π°ΠΊΡΠ°Ρ Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ ΡΡΠ΅ΠΉΡΠ° Future.
- ΠΡΠ΅ΠΉΡ alloc.
ΠΠ°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ Rust 1.36, ΡΠ°ΡΡΠΈΡΠ΅ Π½Π° std, ΠΊΠΎΠΈΡΠΎ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈΡ Π°Π»Π»ΠΎΠΊΠ°ΡΠΎΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Vec), ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ Π² ΠΊΡΠ΅ΠΉΡΠ° alloc. Π‘Π΅Π³Π° std ΡΠ΅Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ° ΡΠ΅Π·ΠΈ ΡΠ°ΡΡΠΈ. ΠΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠΎΠ²Π°. - MaybeUninit Π²ΠΌΠ΅ΡΡΠΎ mem::uninitialized.
Π ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ ΡΠ΅Π»ΠΈΠ·ΠΈ mem::uninitialized Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ΅ Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π·Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ΅ Π·Π° Π»Π΅Π½ΠΈΠ²ΠΈ Π°Π»ΠΎΠΊΠ°ΡΠΈΠΈ Π½Π° ΠΌΠ°ΡΠΈΠ²ΠΈ, Π½ΠΎ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π΅ Π΄ΠΎΡΡΠ° ΠΎΠΏΠ°ΡΠ½Π° (ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ), Π·Π°ΡΠΎΠ²Π° ΡΠΈΠΏΡΡ MaybeUninit Π±Π΅ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΠΎ-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½.
Π ΡΡΠΉ ΠΊΠ°ΡΠΎ MaybeUninit Π΅ ΠΏΠΎ-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°, ΠΎΡ Rust 1.38 mem::uninitialized ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΡΡΠ°ΡΡΠ»Π° ΡΡΠ½ΠΊΡΠΈΡ.
ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΡΠ° Π² Π±Π»ΠΎΠ³Π° (Alexis Beingessner). - NLL Π·Π° Rust 2015.
Π Π°Π½ΠΎΠ½ΡΠ° Rust 1.31.0 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½ΠΈ ΡΠ°Π·ΠΊΠ°Π·Π°Ρ Π° Π·Π° NLL (Non-Lexical Lifetime), ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π΅Π·ΠΈΠΊΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ°Π²ΠΈ borrow checker ΠΏΠΎ-ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ΅Π½ ΠΈ ΠΏΠΎ-ΠΏΡΠΈΠ²Π΅ΡΠ»ΠΈΠ² ΠΊΡΠΌ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. ΠΡΠΈΠΌΠ΅Ρ:
fn main() {
let mut x = 5;
let y = &x;
let z = &mut x; // Π’ΠΎΠ²Π° Π½Π΅ Π±Π΅ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈ 1.31.0.
}Π 1.31.0 NLL ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ ΡΠ°ΠΌΠΎ Π² Rust 2018, Ρ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠ΅, ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΈ Π² Rust 2015.
ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π½Π°ΡΡΠΈΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° NLL, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π² ΡΠ°Π·ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ Π² Π±Π»ΠΎΠ³Π° (Felix Klocks). - ΠΠΎΠ² ΡΠ»Π°Π³ Π·Π° Cargo β βoffline.
Π Rust 1.36 Π±Π΅ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ Π½ΠΎΠ² ΡΠ»Π°Π³ Π·Π° Cargo. Π€Π»Π°Π³ΡΡ βoffline ΠΊΠ°Π·Π²Π° Π½Π° Cargo Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ Π΄Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π±Π΅Π· ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ. ΠΠΎΠ³Π°ΡΠΎ Π½ΡΠΆΠ½ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π΅ ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΠΎΡΠ»Π°ΠΉΠ½, ΠΈ Π°ΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ Π²ΡΠ΅ ΠΏΠ°ΠΊ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ, Cargo ΡΠ΅ Π²ΡΡΠ½Π΅ Π³ΡΠ΅ΡΠΊΠ°. ΠΠ° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° cargo fetch, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΡΠ΅Π³Π»ΠΈ Π²ΡΠΈΡΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. - Π’ΡΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π΅Π½ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅.
ΠΠΌΠ° ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°:
- Π‘Π΅Π³Π° ΠΌΠ°ΠΊΡΠΎΡΡΡ dbg!() ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°.
- ΠΡΠΊΠΎΠΈ API ΡΠ΅Π³Π° ΡΠ° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎ const:
- ΠΠΎΠ²ΠΈ API, ΠΊΠΎΠΈΡΠΎ Π±ΡΡ Π° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ:
- ΠΡΡΠ³ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΡΠΊ.
ΠΡΡΠ³ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Rust, Cargo ΠΈ Clippy.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru
