Rust 1.40 Fa'apolokalame Gagana Fa'asa'oloto

lomia faasalalau fa'asa'olotoga gagana polokalame Ele 1.40, na faavaeina e le poloketi Mozilla. O le gagana e taulaʻi i le saogalemu o manatuaga, e maua ai le faʻaogaina o mea e manatua ai, ma tuʻuina atu meafaigaluega mo le ausiaina maualuga o galuega tutusa e aunoa ma le faʻaogaina o le lapisi ma taʻaloga.

Ole pulega otometi a le Rust e fa'asa'olotoina ai le tagata e faia le fa'aogaina o le fa'asinomaga ma puipuia mai fa'afitauli e tula'i mai i le fa'aogaina o mafaufauga maualalo, e pei ole fa'aogaina ole manatua e leai se totogi, fa'aletonu le fa'asinoala, fa'alavelave fa'alavelave, ma isi mea faapena. O lo'o fa'atupuina se pule o pusa e tufatufa faletusi, fa'amautinoa le fa'apotopotoina ma fa'afoe fa'alagolago e le poloketi. uta, e mafai ai ona e mauaina faletusi e manaʻomia mo le polokalame i le kiliki e tasi. E lagolagoina se fale teu oloa e talimalo ai faletusi crates.io.

tele mea fou:

  • Faʻaopoopo le tomai e faʻailoga fausaga (faʻatulagaina) ma faʻamaumauga (enum ma le poloka Variant) faʻaaoga le uiga "#[le_uma]", lea e mafai ai i le lumanaʻi, faʻaopoopo fanua fou ma filifiliga i fausaga faʻaalia ma faʻamaumauga. Mo se fa'ata'ita'iga, e mafai ona fa'aoga e le au atia'e o modules o lo'o i ai fausaga fa'alaua'itele fa'alaua'itele le "#[non_exhaustive]" e fa'ailoga ai fausaga e ono fa'aopoopoina ni fanua fou i le lumana'i. Seia oʻo mai i le taimi nei, i lenei tulaga, na faʻamalosia le faʻatupuina e filifili i le va o le taʻutaʻu atu o fanua faʻapitoa ma fusifusia i se lisi le suia o fanua. O le uiga fou e aveese ai lenei tapulaʻa ma faʻatagaina oe e faʻaopoopo ni fanua fou i le lumanaʻi e aunoa ma le lamatiaga o le talepeina o tulafono i fafo na tuʻufaʻatasia muamua. I pusa pusa, pe a faʻafetaui filifiliga i le vaega "match", o se faʻamatalaga manino o le mask "_ => {...}" e manaʻomia, e ufiufi ai avanoa i le lumanaʻi, a leai o le a faʻaalia se mea sese pe a faʻaopoopo ni fanua fou.
  • Faaopoopo le mafai ona vala'au le procedural macro mac!() i totonu o se fa'asologa o ituaiga. Mo se fa'ata'ita'iga, e mafai nei ona e tusia le "type Foo = expand_to_type!(bar);" pe afai o le "expand_to_type" o se fa'ata'ita'iga macro.
  • I "fafo { ... }" poloka faaopoopo le tomai e fa'aoga ai fa'atonuga ma uiga fa'apitoa, e aofia ai le "bang!()" macros, mo se fa'ata'ita'iga:

    macro_rules! fai_item { ($igoa:ident) => { fn $igoa(); }}

    fafo {
    fai_mea!(alpha);
    fai_item!(beta);
    }

    fafo "C" {
    #[my_identity_macro] fn foo();
    }

  • I macros faatinoina mafai ona fa'atupuina "macro_rules!" elemene. Fausiaina "macro_rules!" e mafai uma i macros pei o galuega ("mac!()") ma macros i foliga o uiga ("#[mac]").
  • I le $m:meta fa'afanua elemene faaopoopo lagolago mo le fa'avasegaina o fa'ailoga ("[TOKEN_STREAM]", "{TOKEN_STREAM}" ma le "(TOKEN_STREAM)"), mo se fa'ata'ita'iga:

    macro_rules! accept_meta { ($m:meta) => {} }
    accept_meta!( my::path );
    accept_meta!( my::path = "light" );
    accept_meta!( my::path ( abc ) );
    accept_meta!( my::path [ abc ] );
    accept_meta!( my::path { abc } );

  • I le Rust 2015 mode, o mea sese e mafai ona faʻaalia mo faʻafitauli e iloa pe a siaki le nono o fesuiaiga (borrow checker) faʻaaoga le NLL (Non-Lexical Lifetimes) technique. I le taimi muamua, na suia lapataiga i mea sese pe a tamoe i le Rust 2018 mode.
    Ina ua maeʻa le suiga i le Rust 2015 mode, na mafai e le au atinaʻe ona iu aveese mai le siaki aitalafu tuai.

    Sei o tatou manatua o le faiga faʻamaonia e faʻavae i luga o se masini fou mo le amanaia o le olaga atoa o nono fesuiaiga na mafai ai ona iloa nisi o faʻafitauli na le iloa e le tulafono faʻamaonia tuai. Talu ai ona o mea sese e maua mo ia siaki e mafai ona afaina ai le fetaui ma le tulafono galue muamua, o lapataʻiga na muamua tuʻuina atu nai lo mea sese.

  • O le uiga o le "const", lea e fuafua ai le avanoa e faʻaaogaina ai i soʻo se faʻamatalaga nai lo mea tumau, e faʻaaogaina mo le galuega is_power_of_two (mo numera e leʻi sainia).
  • O se vaega fou o le API ua siitia i le vaega mautu, e aofia ai le todo!() macro ma le fasi:: toe fai, mem:: ave, BTreeMap::get_key_value, HashMap::get_key_value, metotia ua faʻamautuina.
    Filifiliga::as_deref, Filifiliga::as_deref_mut, Filifiliga::fafolafola, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_ne_bytes, { f32}::mai_be_bytes, {f64,f32}::mai_le_bytes, ma {f64,f32}::mai_ne_bytes.

  • I totonu o le pusa pule uta uta
    faatino fa'apipi'i fa'apipi'i lapataiga i luga ole disk. Faʻaopoopo le filifiliga "metadata uta" i le poloaiga "metadata uta".--filter-platform"ia fa'aalia na'o afifi o lo'o fusifusia i le fa'atonuga fa'atatau i le koluma fa'alagolago. Fa'aopoopo le http.ssl-version configuration option e fa'amatala ai fa'aliliuga TLS aoga.
    Faʻaopoopo le tomai e faʻasalalau ai le vaega "dev-faalagolago" e aunoa ma le faʻamalamalamaina o le "version" ki.

  • O le rustc compiler o lo'o tu'uina atu le lagolago tulaga tolu mo fa'atonuga fa'atatau thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 ma mips64el-unknown-linux-muslabi64. O le vaega lona tolu e aofia ai le lagolago faʻavae, ae aunoa ma le faʻataʻitaʻiina otometi ma faʻasalalauga o fale faʻapitoa.

puna: opennet.ru

Faaopoopo i ai se faamatalaga