Rust's otomatiki ndangariro manejimendi inosunungura mugadziri kubva pakugadzirisa pointer uye inodzivirira kubva kune yakaderera-level ndangariro manipulation, senge mushure-yemahara memory yekuwana, null pointer dereferences, buffer overruns, nezvimwe. Maneja wepakeji ari kugadzirwa kugovera maraibhurari, kuona kuungana uye kugadzirisa zvinovimbika neprojekiti.
chikuru
- Iye Cargo package maneja akawedzera maturusi ekushanda nemamwe mapakeji registries anogona kugarisana ne crates.io public registry. Semuyenzaniso, vagadziri vezvishandiso zvevaridzi vanogona ikozvino kushandisa yavo yakavanzika registry, iyo inogona kushandiswa pakunyora zvinotsamira muCargo.toml, uye kushandisa shanduro yemhando yakafanana ne crates.io yezvigadzirwa zvavo, pamwe nekutarisa zvinotsamira kune ese ari maviri makrete. io uye kune yako registry.
Kuwedzera maregistries ekunze ku .cargo/config (iri mu$HOME kana mudhairekitori repasuru)
akapa chikamu "[marejista]", uye kushandisa registry yekunze, sarudzo ye "registry" yabuda mutsananguro yekutsamira kwega kwega muCargo.toml. Kuti ubatanidze kune imwe registry, ingoisa chiratidzo chechokwadi mu ~/.cargo/credentials faira wobva wamhanyisa murayiro.
"cargo login --registry = my-registry" uye kuburitsa pasuru -
"cargo publish -registry=my-registry"; - Yakawedzera rutsigiro rwakazara rwekushandisa iyo "?" mumiyedzo
dzidziso , zvichikubvumidza kushandisa kodhi yemuenzaniso kubva pane zvinyorwa sebvunzo. Kare mushandisi
"?" inogona kushandiswa kubata zvikanganiso panguva yekuedza chete pamberi pe "fn main()" basa kana mu "#[test]" mabasa; - Mune tsika hunhu hunotsanangurwa uchishandisa procedural macros
akapa kugona kushandisa chero zvibodzwa seti (β#[attr($tokens)]β, β#[attr[$tokens]] uye #[attr{$tokens}]β). Kare, zvinhu zvaingogona kududzwa mumuti/mufomu inodzokororwa uchishandisa tambo literals, semuenzaniso β#[foo(bar, baz(quux, foo = βbarβ))]β, asi iko zvino zvave kugoneka kushandisa manhamba (' #[range(0. .10)]') uye zvivakwa zvakaita seβ#[kusungwa(T: MyTrait)]β; - Mhando dzakagadzikana (hunhu)
TryFrom ΠΈTryInto , kubvumira shanduko yemhando ine kukanganisa kubata. Semuyenzaniso, nzira dzakaita sekubva_be_bytes dzine marudzi akakwana dzinoshandisa arrays sekuisa, asi data rinowanzouya riri reSlice type, uye kushandura pakati pezvimedu nezvidimbu zvinonetsa kuita nemaoko. Nerubatsiro rweunhu hutsva, kushanda kwakatarwa kunogona kuitwa pakubhururuka kuburikidza nekufona ku.try_into(), semuenzaniso, "let num = u32::from_be_bytes(slice.try_into()?)". Kune shanduko dzinogara dzichibudirira (semuenzaniso, kubva pamhando u8 kusvika u32), mhando yekukanganisa yawedzerwaInfallible , kubvumira kushandiswa kwakajeka
TryFrom kune ese aripo ekuita e "Kubva"; - Basa rakaregwa
CommandExt::before_exec , iyo yaibvumira mubati kuti aurawe asati aita exec, iyo yaiitwa mumamiriro ekuita kwemwana akafukidzwa mushure meforogo () kufona. Pasi pemamiriro ezvinhu akadai, zvimwe zviwanikwa zvemaitiro evabereki, senge faira descriptors uye mepu yekurangarira nzvimbo, zvinogona kudzokororwa, izvo zvinogona kutungamira kune isina kutsanangurwa maitiro uye zvisirizvo kushanda kwemaraibhurari.
Inokurudzirwa kushandisa isina kuchengetedzeka basa pane before_execCommandExt::pre_exec . - Yakagadzikana yakasainwa uye isina kusainwa maatomu emhando dzemhando dzakakura kubva pa8 kusvika pa64 bits (semuenzaniso,
AtomicU8 ), pamwe chete nemhando dzakasainaNonZeroI [8|16|32|64|128]. - Chikamu chitsva cheAPI chaendeswa kuchikamu chakatsiga, kusanganisira iyo Chero::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] uye nzira dzeSystemTime dzakadzikamiswa ::checked_[add|sub]. The iter::from_fn uye iter::successors mabasa akagadziriswa;
- Pamhando dzose dzakakwana, nzira dzechecked_pow, saturating_pow, wrapping_pow uye overflowing_pow dzinoshandiswa;
- Yakawedzera kugona kugonesa optimizations padanho rekubatanidza nekutsanangura iyo "-C linker-plugin-lto" yekuvaka sarudzo.
Source: opennet.ru