Rust 1.35

Rust'i arendajate meeskond on rÔÔmuga tutvustada oma programmeerimiskeele uut versiooni: 1.35. Rust on programmeerimiskeel, mis vÔimaldab kirjutada usaldusvÀÀrseid ja tÔhusalt töötavaid programmes.

Kui teil on juba Rust installitud rustupi kaudu, siis saate vÀrskendada jÀrgnevaga:
$ rustup update stable

Uuenduse peamine vĂ”imalus on realiseerida trait'e sulgude jaoks Fn, FnOnce, FnMut, vastavalt Box<dyn Fn>, Box<dyn FnOnce>, Box<dyn FnMut>. Lisatud on vĂ”imalus konverteerida sulgud ohtlike funktsioonide nĂ€idikutesse ning makro dbg!() kutsumine on nĂŒĂŒd vĂ”imalik ilma argumentideta; standardraamatukogu on stabiliseeritud.

Detailid:

  • Uues versioonis on lisatud trait'ide Fn, FnOnce, FnMut realiseerimised Box<dyn Fn>, Box<dyn FnOnce>, Box<dyn FnMut>, vastavalt.
    NĂŒĂŒd töötab jĂ€rgmine kood:
    fn foo(x: Box<dyn Fn(u8) -> u8>) -> Vec<u8> {
    vec![1, 2, 3, 4].into_iter().map(x).collect()
    }

    Lisaks on vÔimalik sulgudest otse Box<dyn FnOnce> kutsuda:
    fn foo(x: Box<dyn FnOnce()>) {
    x()
    }

  • NĂŒĂŒd on sulgud vĂ”imalikud ohtlikke fn nĂ€idikutesse konverteerimisel.
    Praegu on jÀrgmine kood kehtiv:
    /// 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!();
    });
    }
    }

  • Lisatud on vĂ”imalus kutsuda makrot dbg!() ilma argumentideta.
    Kui sellele makrole edastada mingi vÀljend, siis makro kuvab selle tulemuse. NÀide:
    fn main() {
    let mut x = 0;

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

    dbg!(x);
    }

    Kui sellist koodi kÀivitada, nÀete:
    [src/main.rs:4] x == 1 = false
    [src/main.rs:8] x = 0

    NĂŒĂŒd saate kirjutada jĂ€rgmist:
    fn main() {
    let condition = true;

    if condition {
    dbg!();
    }
    }

    KÀivitades sellist koodi, nÀete:
    [src/main.rs:5]

  • MĂ”ned standardraamatukogu osad on stabiliseeritud
    • Uued meetodid f32 ja f64 jaoks:
      • f32::copysign
      • f64::copysign

      Tegelikult kopeerivad funktsioonid teise arvu mÀrk. NÀide:
      fn main() {
      assert_eq!(3.5_f32.copysign(-0.42), -3.5);
      }

    • Uued meetodid Range tĂŒĂŒpide jaoks
      • Range::contains
      • RangeFrom::contains
      • RangeTo::contains
      • RangeInclusive::contains
      • RangeToInclusive::contains

      Nende meetoditega on lihtne kontrollida, kas teatud vÀÀrtus on jÀrjekorras:
      fn main() {
      if (0..=10).contains(&5) {
      println!("Viis on nullist kĂŒmneni kaasatud.");
      }
      }

    • TĂ€ieliku stabiliseeritud API nimekirja leiate siit
  • Selles uuenduses lisati Clippyle (see on programm, mis kontrollib teie koodi paljude vigade suhtes) uus kontroll drop_bounds'i jaoks. See kontroll aktiveerub, kui seatakse piirang: T: Drop - ĂŒldiste funktsioonide jaoks:
    fn foo<T: Drop>(x: T) {}

    Omandada piirang T: Drop on kĂ”ige sagedamini viga, kuna see vĂ€listab kohe mĂ”ned tĂŒĂŒbid nagu nĂ€iteks u8. (Loe rohkem sellest) siit)

  • Cargo (keele paketihaldur) on saanud palju parandusi ja tĂ€iustusi. muudatuste tĂ€ielik nimekiri

Allikas: linux.org.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster