Rust 1.35

Ekipi i zhvilluesve të Rust është i lumtur të prezantojë versionin e ri të gjuhës së tij: 1.35. Rust është një gjuhë programimi që lejon të shkruani programe të besueshme dhe efikase.

Nëse e keni instaluar tashmë Rust përmes rustup, mund të përditësoni me komandën:
$ rustup update stable

E rëndësishme në këtë përditësim është implementimi i trait-ëve të mbylljes Fn, FnOnce, FnMut, për Box<dyn Fn>, Box<dyn FnOnce>, Box<dyn FnMut>, përkatësisht. Shtimi i mundësisë për të konvertuar mbylljet në tregues për funksione të pasigurta, thirrja e makrosë dbg!() tani është e mundur pa argumente, është stabilizuar biblioteka standarde.

NĂ« detaje:

  • NĂ« versionin e ri janĂ« shtuar implementimet e trait-ve Fn, FnOnce, FnMut, pĂ«r Box<dyn Fn>, Box<dyn FnOnce>, Box<dyn FnMut>, pĂ«rkatĂ«sisht.
    Tani ky kod do të funksionojë:
    fn foo(x: Box<dyn Fn(u8) -> u8>) -> Vec<u8> {
    vec![1, 2, 3, 4].into_iter().map(x).collect()
    }

    Gjithashtu, mund të thirret mbyllja direkt nga Box<dyn FnOnce>:
    fn foo(x: Box<dyn FnOnce()>) {
    x()
    }

  • Tani mbylljet mund tĂ« konvertohen nĂ« tregues pĂ«r unsafe fn.
    Aktualisht ky kod është valid:
    /// 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!();
    });
    }
    }

  • ËshtĂ« shtuar mundĂ«sia e thirrjes sĂ« makrosĂ« dbg!() pa argumente.
    Nëse i kaloni këtij makrosi një shprehje, makrosi do të nxjerrë rezultatin e saj. Shembull:
    fn main() {
    let mut x = 0;

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

    dbg!(x);
    }

    Kur të ekzekutoni këtë kod, do të shihni:
    [src/main.rs:4] x == 1 = false
    [src/main.rs:8] x = 0

    Tani mund të shkruani kështu:
    fn main() {
    let condition = true;

    if condition {
    dbg!();
    }
    }

    Kur të ekzekutoni këtë kod, do të shihni:
    [src/main.rs:5]

  • JanĂ« stabilizuar disa pjesĂ« tĂ« bibliotekĂ«s standarde.
    • Metodat e reja pĂ«r f32 dhe f64:
      • f32::copysign
      • f64::copysign

      Kështu, funksionet kopjojnë shenjën nga një numër tjetër. Shembull:
      fn main() {
      assert_eq!(3.5_f32.copysign(-0.42), -3.5);
      }

    • JanĂ« shtuar metoda tĂ« reja pĂ«r tipet Range.
      • Range::contains
      • RangeFrom::contains
      • RangeTo::contains
      • RangeInclusive::contains
      • RangeToInclusive::contains

      Me këto metoda mund të kontrolloni lehtësisht nëse një vlerë e caktuar ndodhet në një sekuencë:
      fn main() {
      if (0..=10).contains(&5) {
      println!("Pesë është i përfshirë nga zero në dhjetë.");
      }
      }

    • Lista e plotĂ« e API-ve tĂ« stabilizuar mund tĂ« gjendet. kĂ«tu
  • NĂ« kĂ«tĂ« pĂ«rditĂ«sim, nĂ« Clippy (Kjo Ă«shtĂ« njĂ« program qĂ« kontrollon kodin tuaj pĂ«r shumĂ« gabime) Ă«shtĂ« shtuar njĂ« kontroll i ri pĂ«r drop_bounds. Ky kontroll aktivizohet kur vendosni kufizim: T: Drop — pĂ«r funksione tĂ« pĂ«rgjithshme:
    fn foo<T: Drop>(x: T) {}

    Të kesh një kufizim T: Drop shpesh është një gabim, pasi përjashton menjëherë disa tipe si, për shembull, u8. (Më shumë rreth kësaj mund të lexoni) këtu)

  • ShumĂ« gjĂ«ra janĂ« pĂ«rmirĂ«suar dhe korrigjuar nĂ« Cargo (menaxheri i paketave tĂ« gjuhĂ«s), lista e plotĂ« e ndryshimeve

Burimi: linux.org.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster