Рѓа 1.35

Развојниот тим на Rust со задоволство објавува нова верзија на нивниот јазик: 1.35. Rust е програмски јазик кој ви овозможува да пишувате сигурни и ефикасни програми.

Ако веќе имате инсталирано Rust преку Rustup, можете да ажурирате со командата:
$ rustup ажурирање е стабилно

Главната работа во ажурирањето е имплементацијата на карактеристиките за затворање Fn, FnOnce, FnMut, за Box , Кутија , Кутија , соодветно. Додавањето можност за фрлање затворања на покажувачи на небезбедни функции, повикување на макрото dbg!() сега е можно без аргументи, а стандардната библиотека е стабилизирана.

До детали:

  • Во новата верзија додадовме имплементации на карактеристиките Fn, FnOnce, FnMut за Box , Кутија , Кутија , соодветно.
    Сега овој код ќе работи:
    fn foo(x: кутија u8>) -> Век {
    vec![1, 2, 3, 4].into_iter().map(x).collect()
    }

    Можете исто така да повикате затворање директно од Box :
    fn foo(x: кутија ) {
    x()
    }

  • Затворачите сега може да се фрлаат на покажувачи до небезбедни fn.
    Сега овој код е валиден:
    /// Безбедносните непроменливи се оние на положениот покажувач „небезбеден fn“.
    небезбеден fn call_unsafe_fn_ptr(f: небезбеден fn()) {
    f ()
    }

    fnmain() {
    // БЕЗБЕДНОСТ: Нема непроменливи.
    // Затворањето е статички спречено да прави небезбедни работи.
    небезбедно {
    call_unsafe_fn_ptr(|| {
    dbg!();
    });
    }
    }

  • Додадена е можност за повикување на макрото dbg!() без аргументи.
    Ако префрлите некој израз на ова макро, макрото ќе го отпечати својот резултат. Пример:
    fnmain() {
    нека mut x = 0;

    ако dbg!(x == 1) {
    x += 1;
    }

    dbg!(x);
    }

    Кога ќе го извршите овој код, ќе видите:
    [src/main.rs:4] x == 1 = неточно
    [src/main.rs:8] x = 0

    Сега можете да напишете вака:
    fnmain() {
    нека услов = точно;

    ако услов {
    dbg!();
    }
    }

    Кога ќе го извршите овој код, ќе видите:
    [src/main.rs:5]

  • Некои делови од стандардната библиотека се стабилизирани
    • Нови методи за f32 и f64:
      • f32::copysign
      • f64::copysign

      Всушност, функциите го копираат знакот на друг број. Пример:
      fnmain() {
      assert_eq!(3.5_f32.copysign(-0.42), -3.5);
      }

    • Додадени се нови методи за типови опсег
      • Опсег::содржи
      • ОпсегОд::содржи
      • ОпсегДо::содржи
      • RangeInclusive::содржи
      • RangeToInclusive::содржи

      Со овие методи можете лесно да проверите дали одредена вредност е во низа:
      fnmain() {
      ако (0..=10).содржи(&5) {
      println!(„Пет е вклучен во нула до десет“);
      }
      }

    • Можете да најдете комплетна листа на стабилизирани API тука
  • Во ова ажурирање, Clippy (ова е програма што го проверува вашиот код за многу грешки) додаде нова проверка за drop_bounds. Оваа проверка работи кога ќе поставите ограничување: T: Drop - за генерализирани функции:
    fn foo (x:T){}

    Имајќи T: Ограничувањето за паѓање е најчесто грешка, бидејќи некои типови веднаш се исклучуваат, како што е u8. (Можете да прочитате повеќе за ова тука)

  • Многу подобрувања и поправки во Cargo (менаџер на јазичен пакет), целосна листа на промени

Извор: linux.org.ru

Купете доверлив хостинг за сајтови со DDoS заштита, VPS VDS сервери 🔥 Купете сигурен веб-хостинг со DDoS заштита, VPS VDS сервери | ProHoster