Rust 1.42 Варақаи забони барномасозӣ

нашр шудааст нашри забони барномасозии система Занги 1.42, аз ҷониби лоиҳаи Mozilla таъсис дода шудааст. Забон ба бехатарии хотира тамаркуз мекунад, идоракунии автоматии хотираро таъмин мекунад ва асбобҳоро барои ноил шудан ба параллелизми вазифаҳои баланд бидуни истифодаи коллектори партовҳо ва runtime.

Идоракунии хотираи автоматии Rust таҳиякунандаро аз коркарди нишондиҳандаҳо озод мекунад ва аз мушкилоте, ки дар натиҷаи коркарди хотираи сатҳи паст ба вуҷуд меоянд, ба монанди дастрасии пас аз хотираи хотира, истинодҳои нул нишондодҳо, изофаи буферӣ ва монанди инҳо муҳофизат мекунад. Менеҷери бастаҳо барои паҳн кардани китобхонаҳо, таъмини ҷамъбаст ва идоракунии вобастагӣ аз ҷониби лоиҳа таҳия карда мешавад. бор, ба шумо имкон медиҳад, ки китобхонаҳои барои барнома лозимиро бо як клик дастрас кунед. Барои китобхонаҳои мизбон як анбор дастгирӣ карда мешавад crates.io.

асосӣ навовариҳо:

  • Илова карда шуд дастгирии қолибҳо барои мувофиқ кардани қисмҳои буридаҳо (массивҳои динамикӣ, бурида). Пештар мувофиқати дақиқ иҷозат дода мешуд, аммо ҳоло барои пӯшидани унсурҳои боқимондаи массив конструксияҳои аломати ".." -ро истифода бурдан мумкин аст. Барои намуна:

    fn foo(калимаҳо: &[&str]) {
    мувофиқ кардани калимаҳо {

    // унсурҳои ибтидоии массивро тафтиш мекунад ва нодида мегирад
    унсурҳои пайрави онҳо
    ["Салом", "Ҷаҳон", "!", ..] => println!("Салом Ҷаҳон!"),

    // ду унсури аввалро тафтиш мекунад "Foo" ва "Bar" ва боқимонда муҳим нест
    ["Фу", "Бар", ..] => println!("Баз"),

    // ҳама чизро сарфи назар кунед, аммо унсури охирин бояд "!" бошад.
    [..., “!”] => println!(“!!!”),

    // дар буридаи оғоз мо ҳама чизро ба ҷуз элементи охирин, ки бояд "z" бошад, дохил мекунем
    [start @ .., "z"] => println!("бо: {:?} оғоз мешавад", оғоз),

    // дар қисмати ниҳоӣ мо ҳама чизро ба ҷуз элементи аввал мегузорем, ки бояд "a" бошад.
    ["a", end @ ..] => println!("бо: {:?}" анҷом меёбад),

    rest => println!("{:?}", истироҳат),
    }
    }

  • Илова кардани макроси нави "мувофиқ аст!", ки ифода ва намунаро ҳамчун вуруд қабул мекунад ва агар намуна ба ифода мувофиқат кунад, "ҳақиқӣ" -ро бармегардонад. Шаблон метавонад амалиёти "|"-ро истифода барад ва «агар».

    мувофиқат self.partial_cmp(дигар) {
    Баъзе (камтар) => дуруст,
    _ => бардурӯғ,
    }

    мувофиқат мекунад!(self.partial_cmp(дигар), Баъзеҳо(Камтар))

    let foo = 'f';
    тасдиқ кунед!(мувофиқ!(foo, 'A'..='Z' | 'a'..='z'));

    let bar = Баъзе (4);
    тасдиқ!(мувофиқ!(бар, Баъзе(х) агар x > 2));

  • Дар паёмҳои воҳима ҳангоми истифодаи нодуруст нишон дода мешаванд
    Навъҳои Опсия ва Натиҷа, акнун рақамҳои сатрро бо истинод ба коде, ки занги мушкилро анҷом додааст, нишон диҳед, на истинод ба рамзи амалисозии занг дар libcore. Масалан, тағирот ба зангҳо барои кушодан ва интизор шудан аз Option::None таъсир мерасонад ё ҳангоми истифодаи unwrap_err, wait, expect_err ва усулҳои шабеҳ дар намуди Натиҷаҳо садама мезанад.

  • Менеҷери бастаи боркаш ивазкунии автоматии "proc_macro crate" -ро ба блоки "extern" барои бастаҳо бо макросҳои мурофиавӣ таъмин мекунад. Ин тағирот имкон медиҳад, ки дастури "истифода" ба макросҳои мурофиавӣ бидуни муайян кардани "extern crate proc_macro;" дар код истифода шавад. Масалан, агар барнома сатри "use proc_macro::TokenStream;"-ро истифода барад, пас код ҳоло кор мекунад, агар аз он "extern crate proc_macro;" хориҷ карда шавад.
  • Имкониятхои китобхонаи стандартй васеъ карда шуданд. Дар iter:: Empty илова кард Дастгирии ирсол ва ҳамоҳангсозӣ барои ҳама арзишҳои T.
    Рамзи зангҳо::{map_unchecked, map_unchecked_mut} расонида шуд аз баргардонидани арзиши навъи барои татбиқи "Size".
    Дар io:: Курсор ба амал бароварда шуд PartialEq ва Eq. Аттрибути "const" имкони истифода дар ҳама гуна контекстро ба ҷои доимӣ муайян мекунад, татбиқ карда шуд барои Layout :: усули нав.

  • Қисми нави API ба категорияи устувор интиқол дода шуд, аз ҷумла CondVar::wait_while, CondVar::wait_timeout_while,
    DebugMap :: калид, DebugMap :: арзиш,
    ManuallyDrop::гиред,
    ptr :: slice_from_raw_parts_mut ва ptr ::slice_from_raw_parts.

  • Усули тавсифи Error:: бекор карда шудааст.
  • Дастгирии сатҳи дуввум барои платформаҳои armv7a-none-eabi ва riscv64gc-unknown-linux-gnu. Дастгирии китобхонаи стандартӣ барои платформаи riscv64gc-unknown-linux-gnu таъмин карда шудааст.
    Платформаҳои 32-бита Apple паст карда шудааст то сатҳи сеюми дастгирӣ, ки дастгирии асосиро дар назар дорад, аммо бидуни санҷиши автоматикунонидашуда ва нашри сохторҳои расмӣ. Пастшавии дастгирӣ аз он иборат аст, ки Apple дигар платформаҳои 32-битаро дастгирӣ намекунад.

Манбаъ: opennet.ru

Илова Эзоҳ