rhyddhau iaith rhaglennu system , a sefydlwyd gan brosiect Mozilla. Mae'r iaith yn canolbwyntio ar ddiogelwch cof, yn darparu rheolaeth cof awtomatig, ac yn darparu offer ar gyfer cyflawni cyfochrogrwydd tasg uchel heb ddefnyddio casglwr sbwriel a .
Mae rheolaeth cof awtomatig Rust yn rhyddhau'r datblygwr rhag trin pwyntydd ac yn amddiffyn rhag problemau sy'n deillio o drin cof lefel isel, megis mynediad cof ôl-rhad ac am ddim, cyfeiriadau pwyntydd nwl, gor-redeg byffer, ac ati. Mae rheolwr pecyn yn cael ei ddatblygu i ddosbarthu llyfrgelloedd, sicrhau cydosod a rheoli dibyniaethau gan y prosiect. , sy'n eich galluogi i gael y llyfrgelloedd sydd eu hangen ar gyfer y rhaglen mewn un clic. Cefnogir ystorfa i gynnal llyfrgelloedd .
Y prif :
- Ychwanegwyd y gallu i farcio strwythurau (struct) ac enumerations (enum gyda bloc Variant) gan ddefnyddio'r priodoledd "]", sydd Yn caniatáu ychwanegu meysydd ac amrywiadau newydd yn y dyfodol at strwythurau a rhifiadau datganedig. Er enghraifft, gall datblygwyr modiwlau gyda strwythurau gyda meysydd a ddatganwyd yn gyhoeddus ddefnyddio "#[non_exhaustive]" i nodi strwythurau lle gellir ychwanegu meysydd newydd yn y dyfodol. Hyd yn hyn, mewn sefyllfaoedd o'r fath, roedd yn rhaid i'r datblygwr ddewis rhwng datgan meysydd yn breifat a rhwymo i restr sefydlog o feysydd. Mae'r priodoledd newydd yn dileu'r cyfyngiad hwn ac yn caniatáu ychwanegu meysydd newydd yn y dyfodol heb y risg o dorri cod allanol a luniwyd yn flaenorol. Mewn pecynnau crât, wrth gymharu amrywiadau yn yr adran "cyfateb", mae angen mwgwd penodol "_ => {...}" i orchuddio meysydd posibl yn y dyfodol; fel arall, bydd gwall yn cael ei daflu wrth ychwanegu meysydd newydd.
- Y gallu i alw'r macro gweithdrefnol mac!() mewn cyd-destun math. Er enghraifft, gallwch nawr ysgrifennu "type Foo = expand_to_type!(bar);" os yw "expand_to_type" yn macro gweithdrefnol.
- Mewn blociau "extern { … }" y gallu i ddefnyddio macros gweithdrefnol a phriodoleddau, gan gynnwys macros "bang!()", er enghraifft:
rheolau_macro! gwneud_eitem { ($enw:ident) => { fn $enw(); } }
allanol {
gwneud_eitem!(alffa);
gwneud_eitem!(beta);
}allanol "C" {
#[macro_fy_hunaniaeth]
fn foo();
} - Mewn macros Y gallu i gynhyrchu elfennau "macro_rules!". Mae cynhyrchu "macro_rules!" yn bosibl mewn macros tebyg i swyddogaethau ("mac!()") ac mewn macros sy'n seiliedig ar briodoleddau ("#[mac]").
- Yn yr elfen gyfatebol $m:meta cefnogaeth ar gyfer gwerthoedd rhifo tocynnau mympwyol ('[TOKEN_STREAM]', '{TOKEN_STREAM}' a '(TOKEN_STREAM)'), er enghraifft:
rheolau_macro! derbyn_meta { ($m:meta) => {} }
derbyn_meta!( fy::llwybr );
derbyn_meta!( fy::llwybr = "wedi'i oleuo" );
derbyn_meta!( fy::llwybr ( abc ) );
derbyn_meta!( fy::llwybr [ abc ] );
derbyn_meta!( fy::llwybr { abc } ); - Yn y modd Rust 2015, mae adrodd gwallau bellach wedi'i alluogi ar gyfer problemau a ganfuwyd gan y gwiriwr benthyg gan ddefnyddio'r dechneg NLL (Amseroedd Bywyd Aneiriol). Yn flaenorol, roedd rhybuddion yn cael eu disodli gan wallau wrth redeg yn y modd Rust 2018.
Ar ôl i'r newid gael ei ymestyn i'r modd Rust 2015, roedd y datblygwyr o'r diwedd yn gallu o'r hen wiriwr benthyca.Fel atgoffa, gwnaeth y system ddilysu, yn seiliedig ar fecanwaith newydd ar gyfer cyfrif am oes newidynnau benthyg, hi'n bosibl nodi rhai problemau a aeth heb i'r hen god dilysu sylwi arnynt. Gan y gallai allbwn gwall ar gyfer gwiriadau o'r fath effeithio ar gydnawsedd â chod a oedd yn rhedeg yn flaenorol, cyhoeddwyd rhybuddion yn lle gwallau i ddechrau.
- Mae'r faner "const", sy'n pennu'r posibilrwydd o'i defnyddio mewn unrhyw gyd-destun yn lle cysonion, yn cael ei chymhwyso i'r ffwythiant is_power_of_two (ar gyfer cyfanrifau heb lofnod).
- Mae rhan newydd o'r API wedi'i symud i'r categori sefydlog, gan gynnwys y macro todo!() wedi'i sefydlogi a'r dulliau slice::repeat, mem::take, BTreeMap::get_key_value, a HashMap::get_key_value.
Opsiwn::as_deref, Opsiwn::as_deref_mut, Opsiwn::flatten, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_ne_bytes, {f32,f64}::from_be_bytes, {f32,f64}::from_le_bytes, a {f32,f64}::from_ne_bytes. - Yn y rheolwr pecynnau cargo
Mae rhybuddion y crynhoydd yn cael eu storio mewn storfa dros dro ar y ddisg. Mae gan y gorchymyn "cargo metadata" bellach y "" i arddangos dim ond pecynnau sydd wedi'u rhwymo i'r platfform targed penodedig yn y graff datrys dibyniaeth. Mae'r paramedr ffurfweddu http.ssl-version wedi'i ychwanegu i bennu'r fersiynau TLS a ganiateir.
Ychwanegwyd y gallu i gyhoeddi'r adran "" heb nodi'r allwedd "fersiwn". - Mae'r crynhoydd rustc bellach yn darparu cefnogaeth lefel 3 ar gyfer y llwyfannau targed thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64, a mips64el-unknown-linux-muslabi64. Mae Lefel 3 yn darparu cefnogaeth sylfaenol, ond heb brofion awtomataidd na strwythurau swyddogol.
Ffynhonnell: opennet.ru
