Rozsda 1.35

A Rust fejlesztőcsapata örömmel jelenti be nyelvük új verzióját: 1.35. A Rust egy programozási nyelv, amellyel megbízható és hatékony programok írhatók.

Ha a Rust már telepítve van a rustup segítségével, frissítheti a következő paranccsal:
$ rustup frissítés stabil

A frissítésben a legfontosabb az Fn, FnOnce, FnMut, Box lezárási tulajdonságok megvalósítása. ,Doboz ,Doboz , ill. A nem biztonságos függvényekre mutató mutatók lezárásának lehetőségével a dbg!() makró meghívása immár argumentumok nélkül is lehetséges, a szabványos könyvtár pedig stabilizálódott.

A részletekhez:

  • Az új verzióban hozzáadtuk az Fn, FnOnce, FnMut tulajdonságok megvalósítását a Box számára ,Doboz ,Doboz , ill.
    Most ez a kód fog működni:
    fn foo(x: Box u8>) -> Vec {
    vec![1, 2, 3, 4].into_iter().map(x).collect()
    }

    A bezárást közvetlenül a Box-ból is hívhatja :
    fn foo(x: Box ) {
    x()
    }

  • A lezárások mostantól a nem biztonságos fn-re mutató mutatókra vethetők.
    Most ez a kód érvényes:
    /// A biztonsági invariánsok az átadott "unsafe fn" mutatóéi.
    unsafe fn call_unsafe_fn_ptr(f: unsafe fn()) {
    f()
    }

    fn main() {
    // BIZTONSÁG: Nincsenek invariánsok.
    // A lezárás statikusan meg van akadályozva a nem biztonságos tevékenységektől.
    nem biztonságos {
    call_unsafe_fn_ptr(|| {
    dbg!();
    });
    }
    }

  • Hozzáadtuk a dbg!() makró argumentumok nélküli meghívását.
    Ha valamilyen kifejezést ad át ennek a makrónak, a makró kiírja az eredményét. Példa:
    fn main() {
    mut x = 0;

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

    dbg!(x);
    }

    A kód futtatásakor a következőket fogod látni:
    [src/main.rs:4] x == 1 = hamis
    [src/main.rs:8] x = 0

    Most így írhatsz:
    fn main() {
    legyen feltétel = igaz;

    if feltétel {
    dbg!();
    }
    }

    A kód futtatásakor a következőket fogod látni:
    [src/main.rs:5]

  • A standard könyvtár egyes részeit stabilizálták
    • Új módszerek f32 és f64 számára:
      • f32::copysign
      • f64::copysign

      Valójában a függvények egy másik szám előjelét másolják. Példa:
      fn main() {
      assert_eq!(3.5_f32.copysign(-0.42), -3.5);
      }

    • Új metódusok hozzáadva a tartománytípusokhoz
      • Tartomány::tartalmazza
      • TartományFrom::tartalmazza
      • RangeTo::tartalmazza
      • RangeInclusive::tartalmazza
      • RangeToInclusive::contains

      Ezekkel a módszerekkel egyszerűen ellenőrizheti, hogy egy bizonyos érték sorozatban van-e:
      fn main() {
      if (0..=10).contains(&5) {
      println!("Öt benne van a nullától tízig.");
      }
      }

    • Megtalálhatja a stabilizált API-k teljes listáját itt
  • Ebben a frissítésben a Clippy (ez egy olyan program, amely számos hibát ellenőrzi a kódban) új ellenőrzést adott a drop_bounds számára. Ez az ellenőrzés akkor működik, ha beállít egy korlátot: T: Drop - általános funkciókhoz:
    fn foo (x:T){}

    A T: Drop korlátozás megléte leggyakrabban hiba, mivel néhány típus azonnal kizárásra kerül, mint például az u8 (erről bővebben olvashat itt)

  • Sok fejlesztés és javítás a Cargo-ban (nyelvi csomagkezelő), változások teljes listája

Forrás: linux.org.ru

Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster