Rust qhov kev tswj hwm tsis siv neeg lub cim xeeb tso tawm tus tsim tawm los ntawm kev siv tus taw tes thiab tiv thaiv cov teeb meem tshwm sim los ntawm kev tswj hwm lub cim xeeb qis, xws li kev nkag mus rau lub cim xeeb tom qab tsis pub dawb, tsis muaj qhov taw qhia tsis zoo, tsis muaj kev cuam tshuam, thiab lwm yam. Tus neeg saib xyuas pob yog tsim los faib cov tsev qiv ntawv, xyuas kom muaj kev sib dhos thiab tswj cov kev vam meej los ntawm qhov project.
ntsiab
- Ntxiv lub peev xwm los kos cov qauv (struct) thiab suav (enum nrog Variant block) siv tus cwj pwm "
#[tsis_exhaustive ]", uasnws tso cai rau yav tom ntej, ntxiv cov teb tshiab thiab cov kev xaiv rau kev tshaj tawm cov qauv thiab cov lej. Piv txwv li, cov neeg tsim khoom ntawm cov qauv uas muaj cov qauv nrog cov chaw tshaj tawm tuaj yeem siv "#[non_exhaustive]" los kos cov qauv uas yuav muaj cov teb tshiab ntxiv rau yav tom ntej. Txog rau tam sim no, nyob rau hauv qhov xwm txheej no, tus tsim tawm raug yuam kom xaiv ntawm kev tshaj tawm thaj chaw ntiag tug thiab khi rau cov npe tsis hloov pauv ntawm thaj chaw. Tus cwj pwm tshiab tshem tawm qhov kev txwv no thiab tso cai rau koj ntxiv cov teb tshiab yav tom ntej yam tsis muaj kev pheej hmoo ntawm kev rhuav tshem yav dhau los tso ua ke sab nraud. Hauv cov pob crate, thaum sib piv cov kev xaiv hauv ntu "match", yuav tsum muaj lub ntsiab lus meej ntawm daim npog qhov ncauj "_ => {...}", suav nrog thaj chaw yav tom ntej, txwv tsis pub muaj qhov yuam kev yuav tshwm sim thaum ntxiv cov teb tshiab. -
Ntxiv lub peev xwm hu rau tus txheej txheem macro mac!() hauv hom ntsiab lus. Piv txwv li, tam sim no koj tuaj yeem sau "hom Foo = expand_to_type!(bar);" yog "expand_to_type" yog qhov txheej txheem macro. - Hauv "extern { ... }" blocks
ntxiv muaj peev xwm siv cov txheej txheem thiab attribute macro, suav nrog "bang!()" macro, piv txwv li:macro_rules! make_item { ($name:ident) => {fn $name(); }}
extern {
make_item!(alpha);
make_item!(beta);
}extern "C" {
#[my_identity_macro] fn foo();
} - Hauv macro
ua raws muaj peev xwm los tsim "macro_rules!" cov ntsiab lus. Tsim "macro_rules!" ua tau ob qho tib si hauv kev ua haujlwm zoo li macro ("mac!()") thiab hauv macros hauv daim ntawv ntawm cov cwj pwm ("#[mac]"). - Hauv $m: metamapping element
ntxiv kev txhawb nqa rau tus nqi token arbitrary enumeration (β[TOKEN_STREAM]β, β{TOKEN_STREAM}β thiab β(TOKEN_STREAM)β), piv txwv li:macro_rules! accept_meta { ($m:meta) => {} }
accept_meta!( kuv::path );
accept_meta!( my::path = "lit" );
accept_meta!( my ::path ( abc ) );
accept_meta!( my::path [ abc ] );
accept_meta!( my::path { abc } ); - Nyob rau hauv Rust 2015 hom, kev ua yuam kev tso tawm tau qhib rau cov teeb meem pom thaum kuaj xyuas qhov qiv ntawm qhov sib txawv (qhib checker) siv NLL (Non-Lexical Lifetimes) txheej txheem. Yav dhau los, cov lus ceeb toom tau hloov nrog qhov yuam kev thaum khiav hauv Rust 2018 hom.
Tom qab qhov kev hloov pauv tau txuas ntxiv mus rau Rust 2015 hom, cov neeg tsim khoom muaj peev xwm kawgrhuav tshem los ntawm tus qub qiv nyiaj checker.Cia peb nco qab tias cov txheej txheem pov thawj raws li lub tswv yim tshiab rau kev coj mus rau hauv tus account lub neej ntawm cov qiv nyiaj hloov pauv tau ua rau nws muaj peev xwm txheeb xyuas qee qhov teeb meem uas tsis tau pom dua los ntawm cov ntawv pov thawj qub. Txij li qhov ua yuam kev tso tawm rau cov tshev no tuaj yeem cuam tshuam rau kev sib raug zoo nrog cov lej ua haujlwm yav dhau los, cov lus ceeb toom tau pib tshaj tawm tsis yog qhov yuam kev.
- Qhov "const" tus cwj pwm, uas txiav txim siab qhov muaj peev xwm siv nws hauv ib qho ntsiab lus tsis tas li, yog siv rau is_power_of_two function (rau unsigned integers).
- Ib feem tshiab ntawm API tau raug tsiv mus rau qeb ruaj khov, suav nrog todo!() macro thiab daim hlais::repeat, mem::take, BTreeMap::get_key_value, HashMap::get_key_value, txoj hauv kev tau ruaj khov.
Option::as_deref, Option::as_deref_mut, Option::flatten, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_ne32, f64}::from_be_bytes, {f32,f64}::from_le_bytes, thiab {f32,f64}::from_ne_bytes. - Nyob rau hauv lub pob neeg saib xyuas cargo
ua raws caching compiler ceeb toom ntawm disk. Ntxiv qhov kev xaiv "cargo metadata" rau "cargo metadata" hais kom ua--filter-platform " los qhia tsuas yog pob khoom khi rau lub hom phiaj lub hom phiaj hauv kab kev daws teeb meem kev vam khom. Ntxiv http.ssl-version configuration xaiv los txhais TLS versions siv tau.
Ntxiv lub peev xwm los luam tawm ntu "dev-dependencies "tsis hais qhov tseem ceeb "version". - Lub rustc compiler muab kev txhawb nqa qib thib peb rau lub hom phiaj platform thumbv7neon-tsis paub-linux-musleabihf, aarch64-tsis paub-tsis muaj-softfloat, mips64-tsis paub-linux-muslabi64 thiab mips64el-tsis paub-linux-muslabi64. Qib thib peb suav nrog kev txhawb nqa yooj yim, tab sis tsis muaj kev sim ntsuas thiab tshaj tawm cov kev tsim tawm.
Tau qhov twg los: opennet.ru