Π•ΠΊΠΈΠΏΡŠΡ‚ Π½Π° Rust с радост прСдставя Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π½Π° своя Π΅Π·ΠΈΠΊ: 1.35. Rust Π΅ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΉΡ‚ΠΎ позволява писанСто Π½Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ.

Ако Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ инсталиран Rust Ρ‡Ρ€Π΅Π· rustup, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:
$ rustup update stable

ΠžΡΠ½ΠΎΠ²Π½ΠΎΡ‚ΠΎ Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ рСализацията Π½Π° Ρ‚Ρ€Π΅ΠΉΡ‚ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° Π·Π°ΠΌΠΈΠΊΠ²Π°Π½Π΅ Fn, FnOnce, FnMut Π·Π° Box, Box, Box ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ. Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄Π΅Π½Π΅ Π½Π° замиквания към ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° нСбСзопасни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° макроса dbg!() сСга Π΅ възмоТно Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ; стабилизация Π½Π° стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΡΡŠΡ‰ΠΎ бСшС ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π°.

По-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ:

  • Π’ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия бяха Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Ρ‚Ρ€Π΅ΠΉΡ‚ΠΎΠ²Π΅Ρ‚Π΅ Fn, FnOnce, FnMut Π·Π° Box, Box, Box ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ.
    Π‘Π΅Π³Π° Ρ‚Π°ΠΊΡŠΠ² ΠΊΠΎΠ΄ Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ:
    fn foo(x: Box u8>) -> Vec {
    vec![1, 2, 3, 4].into_iter().map(x).collect()
    }

    Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ Π·Π°ΠΌΠΈΠΊΠ²Π°Π½Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ Box:
    fn foo(x: Box) {
    x()
    }

  • Π‘Π΅Π³Π° замикванията ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΏΡ€ΠΈΠ²Π΅ΠΆΠ΄Π°Ρ‚ към ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° unsafe fn.
    Π‘Π΅Π³Π° Ρ‚Π°ΠΊΡŠΠ² ΠΊΠΎΠ΄ Π΅ Π²Π°Π»ΠΈΠ΄Π΅Π½:
    /// The safety invariants are those of the `unsafe fn` pointer passed.
    unsafe fn call_unsafe_fn_ptr(f: unsafe fn()) {
    f()
    }

    fn main() {
    // SAFETY: There are no invariants.
    // The closure is statically prevented from doing unsafe things.
    unsafe {
    call_unsafe_fn_ptr(|| {
    dbg!();
    });
    }
    }

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° макроса dbg!() Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ.
    Ако ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄Π΅Ρ‚Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ макрос ΠΈΠ·Ρ€Π°Π·, Ρ‚ΠΎΠΉ Ρ‰Π΅ ΠΈΠ·Π²Π΅Π΄Π΅ нСговия Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
    fn main() {
    let mut x = 0;

    if dbg!(x == 1) {
    x += 1;
    }

    dbg!(x);
    }

    ΠŸΡ€ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Π°ΠΊΡŠΠ² ΠΊΠΎΠ΄ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅:
    [src/main.rs:4] x == 1 = false
    [src/main.rs:8] x = 0

    Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠ°:
    fn main() {
    let condition = true;

    if condition {
    dbg!();
    }
    }

    ΠŸΡ€ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Π°ΠΊΡŠΠ² ΠΊΠΎΠ΄ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅:
    [src/main.rs:5]

  • Бяха стабилизирани някои части ΠΎΡ‚ стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°.
    • Нови ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° f32 ΠΈ f64:
      • f32::copysign
      • f64::copysign

      Π‘ΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π΅ Π΄Π° ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚ Π·Π½Π°ΠΊΠ° Π½Π° Π΄Ρ€ΡƒΠ³ΠΎ число. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
      fn main() {
      assert_eq!(3.5_f32.copysign(-0.42), -3.5);
      }

    • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Range.
      • Range::contains
      • RangeFrom::contains
      • RangeTo::contains
      • RangeInclusive::contains
      • RangeToInclusive::contains

      Π‘ Ρ‚Π΅Π·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ лСсно ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° стойност Π΅ Π² послСдоватСлността:
      fn main() {
      if (0..=10).contains(&5) {
      println!("ΠŸΠ΅Ρ‚ Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Π½ΡƒΠ»Π° Π΄ΠΎ дСсСт.");
      }
      }

    • ПълСн списък с стабилизирани API ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΡƒΠΊ
  • Π’ Ρ‚ΠΎΠ²Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, Π² Clippy (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°, която провСрява ΠΊΠΎΠ΄Π° Π²ΠΈ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈ), Π±Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π½ΠΎΠ²Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π° drop_bounds. Π’Π°Π·ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сработва, ΠΊΠΎΠ³Π°Ρ‚ΠΎ поставитС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: T: Drop β€” Π·Π° ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:
    fn foo(x: T) {}

    Π˜ΠΌΠ΅Ρ‚ΠΎ T: Drop чСсто Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ u8. (ΠŸΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅) Ρ‚ΡƒΠΊ)

  • Много нововъвСдСния ΠΈ ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ Π² Cargo (ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° Π΅Π·ΠΈΠΊΠ°), пълСн списък с ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster