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
-
Stabilized ib qho tshiab asynchronous programming syntax raws li "async" muaj nuj nqi, async txav {... } block, thiab ".ait" tus neeg teb xov tooj, uas ua rau nws yooj yim dua los sau cov neeg tuav haujlwm uas tsis thaiv cov lus txib tseem ceeb. Piv nrog rau yav dhau los muab API rau asynchronous I/O, async/.ait constructs yog yooj yim to taub, nyeem tau heev, thiab tso cai rau koj siv complex asynchronous kev sib cuam tshuam siv cov kev paub txog kev khiav dej num raws li loops, cov lus qhia, thiab kev zam.Async-await syntax tso cai rau koj los tsim cov haujlwm uas tuaj yeem ncua lawv qhov kev ua tiav, rov qab tswj hwm rau cov xov tseem ceeb, thiab tom qab ntawd rov pib ua tiav los ntawm qhov chaw lawv tawm mus. Piv txwv li, qhov kev ncua no yuav tsum tau ua thaum ua I / O, uas lwm yam haujlwm tuaj yeem ua tiav thaum tos cov ntaub ntawv tom ntej tuaj txog. Functions thiab blocks txhais nrog "async fn" thiab "async txav" rov qab ua qhov zoo
Yav tom ntej , uas txhais tau hais tias lub sijhawm ncua asynchronous suav suav sawv cev. Koj tuaj yeem ncaj qha pib qhov kev suav ncua sijhawm thiab tau txais cov txiaj ntsig siv tus neeg teb xov tooj ".ait". Tsis muaj kev nqis tes ua lossis npaj ua ntej kom txog rau thaum .ait hu ua, tso cai rau kev tsim cov nested complex tsim yam tsis muaj nyiaj siv ua haujlwm ntxiv.async fn first_function() -> u32 {.. }
...
cia yav tom ntej = first_function();
...
cia result: u32 = future.await; -
Stabilized "#![feature(bind_by_move_pattern_guards)]", tso cai rau siv cov kev hloov pauv nrog hom khi "los ntawm kev txav mus los " nyob rau hauv cov qauv thiab siv cov ntaub ntawv xa mus rau cov hloov pauv no hauv "yog" ntu ntawm cov lus qhia "match ". Piv txwv li, cov kev tsim kho hauv qab no tau tso cai tam sim no:fn main() {
cia array: Box<[u8; 4]> = Box::new([1, 2, 3, 4]);match array {
tooj
if nums.iter().sum::() == 10=> {
poob (ntau);
}
_ => unreachable!(),
}
} - Tso cai qhia
yam ntxwv thaum txiav txim siab muaj nuj nqi, kaw, thiab ua haujlwm pointers. Conditional compilation attributes (cfg, cfg_attr) uas tswj kev kuaj mob ntawm lint (tso cai, ceeb toom, tsis kam lees thiab txwv) thiab pabcuam macro hu rau tus cwj pwm tau txais kev txhawb nqa.fn len(
#[cfg(windows)] hlais: &[u16], // siv qhov parameter ntawm Windows
#[cfg(not(windows))] hlais: &[u8], // siv lwm OS
) -> siv {
hlais.len()
} - Cov lus ceeb toom txog cov teeb meem raug txheeb xyuas thaum tshawb xyuas qhov qiv ntawm qhov sib txawv (qiv tus checker) siv cov txheej txheem NLL (Non-Lexical Lifetimes),
txhais nyob rau hauv qeb ntawm kev tuag yuam kev. 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. Cov lus ceeb toom tam sim no tau hloov nrog qhov tsis raug thaum khiav hauv Rust 2018 hom. Nyob rau hauv qhov kev tso tawm tom ntej no, kev ua yuam kev tso tawm kuj tseem yuav raug siv hauv Rust 2015 hom, uas thaum kawg yuav tshem tawm cov qub qiv nyiaj; - Qhov "const" tus cwj pwm, uas txiav txim siab qhov muaj peev xwm ntawm kev siv nyob rau hauv ib qho ntsiab lus tsis tas li, yog siv rau cov haujlwm Vec::new, String::new, LinkedList::new, str::len, [T]::len , str::as_bytes,
abs, wrapping_abs thiab overflowing_abs; - Ib feem tshiab ntawm APIs tau raug xa mus rau pawg ruaj khov, suav nrog cov txheej txheem uas tau ua kom ruaj khov
Pin::into_inner, Instant::checked_duration_since thiab Instant::saturating_duration_since; - Tus neeg saib xyuas pob khoom tam sim no muaj peev xwm siv ".toml" txuas ntxiv rau cov ntaub ntawv teeb tsa. Ntxiv kev txhawb nqa ua ntej rau kev tsim cov tsev qiv ntawv tus qauv ncaj qha los ntawm Cargo. Ntxiv tus chij "--workspace", hloov qhov tsis sib haum xeeb "--tag nrho" chij. Ib daim teb tshiab tau ntxiv rau cov metadata "
Luam tawm ", uas tso cai rau koj tshaj tawm kev vam khom los ntawm kev qhia tus lej git thiab tus lej version. Ntxiv cov kev xaiv xeem "-Ztimings" los tsim ib daim ntawv qhia HTML ntawm lub sijhawm ua tiav ntawm ntau theem sib sau ua ke. - Hauv rustc compiler, cov lus tshuaj ntsuam xyuas suav nrog kev txiav cov tails ntawm cov lej uas tsis haum rau hauv lub davhlau ya nyob twg. Muab qib thib peb ntawm kev txhawb nqa rau lub hom phiaj platforms
i686-tsis paub-uefi thiab sparc64-tsis paub-openbsd. 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