Занги 1.35

Дастаи таҳияи Rust бо хушнудӣ версияи охирини забони худро эълон мекунад: 1.35. Rust як забони барномасозӣ мебошад, ки ба шумо имкон медиҳад, ки барномаҳои устувор ва муассир нависед.

Агар шумо аллакай Rust-ро тавассути rustup насб карда бошед, шумо метавонед онро бо фармон навсозӣ кунед:
$ Rustup навсозии устувор

Навсозии асосӣ татбиқи хусусиятҳои пӯшидани Fn, FnOnce ва FnMut барои Box мебошад. , Қуттии , Қуттии , мутаносибан. Имконияти интиқол додани бастаҳо ба нишондиҳандаҳо ба функсияҳои хатарнок илова карда шуд, макроси dbg!() акнун метавонад бидуни аргумент даъват карда шавад ва китобхонаи стандартӣ устувор карда шуд.

Ба тафсилот:

  • Версияи нав татбиқи хислатҳои Fn, FnOnce ва FnMut-ро барои Box илова мекунад. , Қуттии , Қуттии , мутаносибан.
    Акнун ин код кор хоҳад кард:
    fn foo(x: Қуттии u8>) -> Vec {
    vec![1, 2, 3, 4].into_iter().map(x).collect()
    }

    Шумо инчунин метавонед бевосита аз Box занг занед. :
    fn foo(x: Қуттии ) {
    x()
    }

  • Пӯшидаҳо акнун метавонанд ба нишондодҳо ба fn-и хатарнок интиқол дода шаванд.
    Дар айни замон, ин код эътибор дорад:
    /// Инвариантҳои бехатарӣ инҳоянд, ки нишоннамои "fn хатарнок" гузаштаанд.
    unsafe fn call_unsafe_fn_ptr(f: unsafe fn()) {
    f()
    }

    fn main() {
    // АМНИЯТ: Инвариантҳо вуҷуд надоранд.
    // Бастан аз иҷрои корҳои хатарнок ба таври статикӣ пешгирӣ карда мешавад.
    бехатар {
    call_unsafe_fn_ptr(|| {
    dbg!();
    });
    }
    }

  • Имконияти занг задан ба макроси dbg!() бе далелҳо илова карда шуд.
    Агар шумо ифодаро ба ин макрос интиқол диҳед, он натиҷаи худро чоп мекунад. Мисол:
    fn main() {
    бигзор mut x = 0;

    агар dbg!(x == 1) {
    x += 1;
    }

    dbg!(x);
    }

    Вақте ки шумо ин кодро иҷро мекунед, шумо хоҳед дид:
    [src/main.rs:4] x == 1 = бардурӯғ
    [src/main.rs:8] x = 0

    Акнун шумо метавонед чунин нависед:
    fn main() {
    бигзор шарт = дуруст;

    агар шарт {
    dbg!();
    }
    }

    Вақте ки шумо ин кодро иҷро мекунед, шумо хоҳед дид:
    [src/main.rs:5]

  • Баъзе қисмҳои китобхонаи стандартӣ устувор карда шуданд.
    • Усулҳои нав барои f32 ва f64:
      • f32 :: нусхабардорӣ
      • f64 :: нусхабардорӣ

      Функсияҳо аслан аломати рақами дигарро нусхабардорӣ мекунанд. Мисол:
      fn main() {
      assert_eq!(3.5_f32.copysign(-0.42), -3.5);
      }

    • Усулҳои нав барои намудҳои диапазон илова карда шуданд
      • Диапазон:: дорои
      • RangeFrom::-ро дар бар мегирад
      • RangeTo::-ро дар бар мегирад
      • RangeInclusive :: дорои
      • RangeToInclusive :: дорои

      Бо ин усулҳо шумо метавонед ба осонӣ тафтиш кунед, ки оё арзиши муайян дар пайдарпай аст:
      fn main() {
      агар (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