Rust 1.35 αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ

αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„ αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž—αžΆαžŸαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž…αŸ’αžšαŸ‚αŸ‡ αŸ‘αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž‚αž˜αŸ’αžšαŸ„αž„ Mozilla αŸ” αž—αžΆαžŸαžΆαž•αŸ’αžαŸ„αžαž›αžΎαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž…αž„αž…αžΆαŸ† αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž“αž·αž„αž•αŸ’αžαž›αŸ‹αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαž—αžΆαž–αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαž“αŸƒαž€αž·αž…αŸ’αž…αž€αžΆαžšαžαŸ’αž–αžŸαŸ‹αžŠαŸ„αž™αž˜αž·αž“αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαž˜αžΌαž›αžŸαŸ†αžšαžΆαž˜ αž¬αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžšαž”αžŸαŸ‹ Rust αžŠαŸ„αŸ‡αž›αŸ‚αž„αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž–αžΈαž§αž”αžΆαž™αž€αž›αž…αž„αŸ’αž’αž»αž› αž“αž·αž„αž€αžΆαžšαž–αžΆαžšαž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αž–αžΈαž€αžΆαžšαžšαŸ€αž”αž…αŸ†αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž€αž˜αŸ’αžšαž·αžαž‘αžΆαž” αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž€αŸ’αžšαŸ„αž™αž‘αŸ†αž“αŸαžš αž€αžΆαžšαž”αžŠαž·αžŸαŸαž’αž‘αŸ’αžšαž“αž·αž…αž‘αž‘αŸ αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαžŸαž…αŸ†αžŽαž»αŸ‡ αž“αž·αž„αž’αŸ’αžœαžΈαŸ—αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž…αŸ‚αž€αž…αžΆαž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αž’αžΆαž“αžΆαž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ† αž“αž·αž„αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžŠαŸ„αž™αž‚αž˜αŸ’αžšαŸ„αž„αŸ” αž‘αžΉαž€αž’αžΆαž€αžΆαžŸαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž‘αž‘αž½αž›αž”αžΆαž“αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αž™αž…αž»αž…αžαŸ‚αž˜αŸ’αžαž„αŸ” αžƒαŸ’αž›αžΆαŸ†αž„αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž αŸ„αŸ‡αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ crates.io.

αžŸαŸ†αžαžΆαž“αŸ‹ αž€αžΆαžšαž…αŸ’αž“αŸƒαž”αŸ’αžšαžŒαž·αž:

  • Π’ΠΈΠΏΠ°ΠΆΠΈ (trait) FnOnce, FnMut ΠΈ Fn Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ для Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π² ΠΊΡƒΡ‡Π΅ boxed-Ρ‚ΠΈΠΏΠΎΠ² Boxβ€Ήdyn FnOnceβ€Ί, Boxβ€Ήdyn FnMutβ€Ί ΠΈ Boxβ€Ήdyn Fnβ€Ί;
  • αž”αž“αŸ’αžαŸ‚αž˜ αž±αž€αžΆαžŸ привСдСния Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΉ ΠΊ нСбСзопасным указатСлям Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (unsafe fn);
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Π° макроса Β«dbg!Β» Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² для отобраТСния Π² stderr ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° строки Π±Π΅Π· инспСктирования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ срабатывания условных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ;
  • Π’ Ρ‚ΠΈΠΏΡ‹ для чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой f32 ΠΈ f64 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«copysignΒ» для копирования Π·Π½Π°ΠΊΠ° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ числа Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅;
  • Π’ Ρ‚ΠΈΠΏΡ‹ Range* Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«αž˜αžΆαž“Β«, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ значСния Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½;
  • αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž”αž“αŸ’αžαŸ‚αž˜ Ref:Cell:map_split, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ заимствованноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ RefCell для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² заимствованных Π΄Π°Π½Π½Ρ‹Ρ…;
  • αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž”αž“αŸ’αžαŸ‚αž˜ RefCell::replace_with для Π·Π°ΠΌΠ΅Π½Ρ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния RefCell ΠΈ возвращСния старого значСния Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°;
  • αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž”αž“αŸ’αžαŸ‚αž˜ ptr::hash для Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ указатСля ΠΈΠ»ΠΈ ссылки ΠΏΠΎ адрСсу, Π° Π½Π΅ адрСсуСмому Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ;
  • αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž”αž“αŸ’αžαŸ‚αž˜ Option::copied для копирования содСрТимого ΠΎΠΏΡ†ΠΈΠΉ Optionβ€Ή&Tβ€Ί ΠΈΠ»ΠΈ Optionβ€Ή&mut Tβ€Ί;
  • αž•αŸ’αž“αŸ‚αž€αžαŸ’αž˜αžΈαž“αŸƒ APIs αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αŸαžšαž‘αŸ…αž”αŸ’αžšαž—αŸαž‘αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž– αžšαž½αž˜αž‘αžΆαŸ†αž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž–
    f32::copysign,
    f64::copysign,
    RefCell::replace_with,
    RefCell::map_split,
    ptr::hash,
    Range::contains,
    RangeFrom::contains,
    RangeTo::contains,
    RangeInclusive::contains,
    RangeToInclusive::contains ΠΈ
    Option::copied;

  • Π’ clippy (linter) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° drop_bounds, ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ привязки Β«T: DropΒ» Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ;
  • Π’ компилятор Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²ΠΎΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹
    wasm32-unknown-wasi (интСрфСйс αžœαŸ‰αžΆαžŸαžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎ WebAssembly αž“αŸ…αžαžΆαž„αž€αŸ’αžšαŸ…αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€);

  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Rust Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ для дистрибутивов Π½Π° основС стандартной Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Musl.

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹