Rust 1.40 Whakaputa Reo Papatono

whakaputaina te tuku reo hootaka punaha Rust 1.40, i hangaia e te kaupapa Mozilla. Ka arotahi te reo ki te haumaru mahara, ka whakarato i te whakahaere mahara aunoa, ka whakarato taputapu mo te whakatutuki i te whakarara mahi teitei me te kore e whakamahi i te kaikohi paru me te waahi.

Ma te whakahaere mahara aunoa a Rust ka wetekina te kaiwhakawhanake mai i te raweke i te atatohu me te whakamarumaru i nga raru ka puta mai i te raweke mahara taumata-iti, penei i te uru mahara kore-muri, te kore tohu tohu kore, te paopao, me era atu. Kei te whakawhanakehia he kaiwhakahaere mokihi hei tohatoha whare pukapuka, hei whakarite i te huihuinga me te whakahaere i nga whakawhirinakitanga a te kaupapa. utanga, ka taea e koe te tiki i nga whare pukapuka e hiahiatia ana mo te kaupapa i te paato kotahi. Ka tautokohia he putunga hei manaaki i nga whare pukapuka crates.io.

Main nga mahi auaha:

  • Kua taapirihia te kaha ki te tohu i nga hanganga (hanganga) me nga tatauranga (enum me te poraka rereke) ma te whakamahi i te huanga "#[kaore i pau]", ko wai āhei te reira i te wa kei te heke mai, taapirihia nga mara hou me nga whiringa ki nga hanganga me nga tatauranga kua whakahuahia. Hei tauira, ka taea e nga kaiwhakawhanake o nga waahanga he hanganga me nga mara kua whakapuakina ki te iwi whanui te whakamahi i te "#[non_exhaustive]" ki te tohu i nga hanganga ka taapirihia he mara hou a meake nei. Tae noa ki tenei wa, i roto i tenei ahuatanga, i kaha te kaiwhakawhanake ki te whiriwhiri i waenga i te whakapuaki i nga mara me te herea ki te rarangi o nga mara. Ka tangohia e te huanga hou tenei herenga ka taea e koe te taapiri i nga mara hou a muri ake nei me te kore e pakaru te waehere o waho kua whakahiatohia i mua. I roto i nga kete pouaka, ina whakataurite nga whiringa ki te waahanga "match", ka hiahiatia he whakamaaramatanga mo te kanohi kanohi "_ => {...}", e kapi ana i nga mara kei te heke mai, ki te kore ka kitea he hapa i te taapiri i nga mara hou.
  • Kua tapirihia te kaha ki te karanga i te tonotono mac!() i roto i te horopaki momo. Hei tauira, ka taea e koe te tuhi “momo Foo = expand_to_type!(bar);” mena he tonotono tikanga te “expand_to_type”.
  • I roto i nga poraka "waho { ... }". tāpirihia te kaha ki te whakamahi tonotono tikanga me te huanga, tae atu ki nga tonotono "bang!()", hei tauira:

    ture_tono! make_item { ($ingoa:ident) => {fn $ingoa(); }}

    waho {
    hanga_tuemi!(alpha);
    hanga_tuemi!(beta);
    }

    waho "C" {
    #[taku_tuakiri_tono] fn foo();
    }

  • I roto i nga tonotono whakatinana te kaha ki te whakaputa "macro_rules!" Te whakaputa i "tono_rules!" ka taea i roto i nga tonotono rite-mahi ("mac!()") me nga tonotono i te ahua o nga huanga ("#[mac]").
  • Kei te $m:meta huānga mahere tāpirihia tautoko mo nga uara tatau tatau ("[TOKEN_STREAM]", "{TOKEN_STREAM}" me "(TOKEN_STREAM)"), hei tauira:

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

  • I roto i te aratau Rust 2015, ka whakahohehia te putanga hapa mo nga raru kua kitea i te wa e tirotirohia ana te nama o nga taurangi (kaitaki nama) ma te whakamahi i te tikanga NLL (Non-Lexical Lifetimes). I mua, kua whakakapihia nga whakatupato ki nga hapa i te wa e rere ana i te aratau Rust 2018.
    I muri i te huringa ki te aratau Rust 2015, ka taea e nga kaihanga te mutunga Tuhinga o mua mai i te kaitaki nama tawhito.

    Kia maumahara tatou na te punaha manatoko i runga i tetahi tikanga hou mo te whai whakaaro ki te oranga o nga taurangi nama i taea ai te tautuhi i etahi raru kaore i kitea e te waehere manatoko tawhito. I te mea ko nga putanga hapa mo enei arowhai ka pa ki te hototahitanga ki te waehere mahi o mua, i tukuna nga whakatupato i te tuatahi hei utu mo nga hapa.

  • Ko te huanga "const", e whakatau ana i te kaha ki te whakamahi i roto i tetahi horopaki hei utu mo nga taumau, ka whakamahia mo te mahi is_power_of_two (mo nga tauoti kore haina).
  • Kua nekehia tetahi waahanga hou o te API ki te waahanga pumau, tae atu ki te todo!() tonotono me te poro::repeat, mem::take, BTreeMap::get_key_value, HashMap::get_key_value, kua whakapumautia nga tikanga.
    Kōwhiringa::as_deref, Kōwhiringa::as_deref_mut, Kōwhiringa::flatten, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_ne_bytes, { f32}::from_be_bytes, {f64,f32}::from_le_bytes, and {f64,f32}::from_ne_bytes.

  • I roto i te putea kaiwhakahaere utanga
    whakatinana keteroki whakahiato whakatupato i runga i te kōpae. I taapirihia te whiringa "metadata utauta" ki te whakahau "metadata utauta".--filter-platform" ki te whakaatu i nga kohinga anake kua herea ki te papaaapapa kua tohua i roto i te rarangi whakatau whakawhirinaki. Kua taapirihia te whiringa whirihoranga http.ssl-putanga hei tautuhi i nga putanga TLS whaimana.
    Kua taapirihia te kaha ki te whakaputa i te waahanga "dev-whakawhirinaki" me te kore e tohu i te matua "putanga".

  • Ka whakaratohia e te kaitoi rustc te tautoko taumata tuatoru mo nga papaa wharangi thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 me mips64el-unknown-linux-muslabi64. Ko te taumata tuatoru ko te tautoko taketake, engari kaore he whakamatautau aunoa me te whakaputanga o nga hanga mana.

Source: opennet.ru

Tāpiri i te kōrero