Hrdza 1.35

Tím Rust s potešením oznamuje najnovšiu verziu svojho jazyka: 1.35. Rust je programovací jazyk, ktorý vám umožňuje písať robustné a efektívne programy.

Ak už máte Rust nainštalovaný cez rustup, môžete ho aktualizovať príkazom:
$ rustup aktualizácia stabilná

Hlavnou aktualizáciou je implementácia uzatváracích vlastností Fn, FnOnce a FnMut pre Box. , Krabica , Krabica , v uvedenom poradí. Bola pridaná možnosť pretypovať uzávierky na ukazovatele nebezpečných funkcií, makro dbg!() je teraz možné volať bez argumentov a štandardná knižnica bola stabilizovaná.

K detailom:

  • Nová verzia pridáva implementácie vlastností Fn, FnOnce a FnMut pre Box. , Krabica , Krabica , v uvedenom poradí.
    Teraz bude tento kód fungovať:
    fn foo(x: Box u8>) -> Vec {
    vec![1, 2, 3, 4].into_iter().map(x).collect()
    }

    Uzavretie môžete zavolať aj priamo z Boxu. :
    fn foo(x: Box ) {
    x()
    }

  • Uzávery je teraz možné pretypovať na ukazovatele na nebezpečnú funkciu fn.
    Momentálne je tento kód platný:
    /// Bezpečnostné invarianty sú tie, ktoré má odovzdaný ukazovateľ `unsafe fn`.
    nebezpečná funkcia call_unsafe_fn_ptr(f: nebezpečná funkcia()) {
    f()
    }

    fnmain() {
    // BEZPEČNOSŤ: Neexistujú žiadne invarianty.
    // Uzáver je staticky zabránený v vykonávaní nebezpečných činností.
    nebezpečný {
    call_unsafe_fn_ptr(|| {
    dbg!();
    });
    }
    }

  • Pridaná možnosť volať makro dbg!() bez argumentov.
    Ak tomuto makru zadáte výraz, vypíše sa jeho výsledok. Príklad:
    fnmain() {
    nech mut x = 0;

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

    dbg!(x);
    }

    Keď spustíte tento kód, uvidíte:
    [zdroj/main.rs:4] x == 1 = nepravda
    [zdroj/main.rs:8] x = 0

    Teraz môžete písať takto:
    fnmain() {
    nech podmienka = pravda;

    ak podmienka {
    dbg!();
    }
    }

    Keď spustíte tento kód, uvidíte:
    [zdroj/main.rs:5]

  • Niektoré časti štandardnej knižnice boli stabilizované.
    • Nové metódy pre f32 a f64:
      • f32::copysign
      • f64::copysign

      Funkcie v podstate kopírujú znamienko iného čísla. Príklad:
      fnmain() {
      assert_eq!(3.5_f32.copysign(-0.42), -3.5);
      }

    • Pridané nové metódy pre typy Range
      • Rozsah::obsahuje
      • RangeFrom::contains
      • RozsahDo::obsahuje
      • RangeInclusive::contains
      • RozsahVrátane::obsahuje

      Pomocou týchto metód môžete jednoducho skontrolovať, či sa určitá hodnota nachádza v postupnosti:
      fnmain() {
      ak (0..=10).obsahuje(&5) {
      println!("V číslach od nuly do desiatich je zahrnutých päť.");
      }
      }

    • Úplný zoznam stabilizovaných API nájdete tu
  • V tejto aktualizácii pridal Clippy (program, ktorý kontroluje váš kód na množstvo chýb) novú kontrolu pre drop_bounds. Táto kontrola sa spustí pri nastavení obmedzenia: T: Drop – pre generické funkcie:
    fn foo (x: T) {}

    Obmedzenie T: Drop je často chybou, pretože okamžite vylučuje určité typy, ako napríklad u8. (Viac si o tom môžete prečítať tu)

  • Veľa vylepšení a opráv v Cargo (správcovi jazykových balíkov), kompletný zoznam zmien

Zdroj: linux.org.ru

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster