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
- Tus cwj pwm stabilized
Yav tom ntej , uas sawv cev rau tus nqi uas nws qhov kev ntsuam xyuas tseem tsis tau ua tiav thaum siv async / .ait blocks. Cov txiaj ntsig asynchronous txhais tau tias siv Yav Tom Ntej ua rau nws muaj peev xwm txuas ntxiv ua haujlwm tseem ceeb hauv cov xov, thaum tib lub sijhawm tos kom tiav cov kev suav ntawm qee tus nqi; - Lub tsev qiv ntawv ruaj khov
faib , uas muab cov ntsiab lus ntse thiab cov khoom sau rau kev tswj hwm cov txiaj ntsig ntawm kev nco. Memory faib nyob rau hauv std tam sim no siv homIb yam , uas yog re-exported los ntawm alloc. Sib cais siv alloc ua rau kev nkag siab hauv cov ntawv thov tsis khi rau std (β#![no_std]β), nrog rau hauv cov tsev qiv ntawv tsim los siv rau hauv cov haujlwm zoo sib xws yam tsis muaj std; - Txhawm rau hla kev txheeb xyuas qhov tseeb pib ntawm qhov muaj nuj nqis
npaj hom nruab nrabTej zaumUnit , uas tuaj yeem siv los hloov lub mem::unitialized muaj nuj nqi raws li kev nyab xeeb dua. Lub mem:: uninitialized muaj nuj nqi yog yooj yim rau sai tsim arrays, tab sis nws misleads lub compiler vim hais tias nws zoo li tau pib, tab sis qhov tseeb tus nqi tseem uninitialized. Tej zaumUninit tso cai rau koj los qhia meej rau lub compiler tias tus nqi yog uninitialized, coj mus rau hauv tus account qhov ua tau undefined tus cwj pwm cuam tshuam nrog qhov no, thiab tseem los npaj cov tshev hauv cov kev pab cuam los ntawm "maybe_t:" thiab step-by-step pib, cim nws tiav siv lub β.assume_init()β hu. Nrog rau qhov tshwm sim ntawm MaybeUninit, lub mem::unitialized muaj nuj nqi tau deprecated thiab tsis pom zoo siv; - Cov txheej txheem NLL (Non-Lexical Lifetimes), uas nthuav dav lub kaw lus rau kev sau lub neej ntawm kev qiv nyiaj, tau ruaj khov rau cov lus Rust 2015 (thaum pib, NLL tsuas yog txhawb nqa los ntawm Rust 2018). Hloov chaw ntawm kev ua neej nyob ntawm qib lexical, NLL ua li ntawd nyob rau theem ntawm cov txheej txheem taw qhia hauv kev ua tiav cov duab ntws. Txoj hauv kev no tso cai rau koj txhawm rau txhawm rau txhawm rau txhawm rau txheeb xyuas qhov qiv ntawm qhov hloov pauv (qhib checker) thiab tso cai rau kev ua tiav ntawm qee hom kev cai raug cai, kev siv uas yav dhau los coj mus rau qhov yuam kev. Tus cwj pwm tshiab kuj ua rau kev debugging yooj yim dua;
- Kev siv tshiab ntawm associative arrays suav nrog
HashMap , raws li kev thov ntawm cov qauvSwiss Rooj (automatically loadedhashbrown::HashMap , tshwj tsis yog hais meej meej, xws li std::HashMap, uas yog raws li SipHash 1-3). Lub software interface tseem zoo li qub, thiab qhov sib txawv pom tau rau tus tsim tawm kom ua rau muaj kev ua tau zoo thiab txo kev nco; - Nyob rau hauv lub pob neeg saib xyuas cargo
ntxiv qhov "--offline" kev xaiv, uas ua rau kev ua haujlwm yam tsis muaj kev nkag mus rau lub network, uas tsuas yog cov pob cached hauv qhov system hauv zos tau siv thaum txhim kho kev vam meej. Yog tias qhov kev vam khom tsis nyob hauv lub zos cache, qhov yuam kev yuav raug muab pov tseg. Txhawm rau preload dependencies rau hauv lub zos cache ua ntej mus offline, koj tuaj yeem siv "cargo fetch" hais kom ua; - Siv lub peev xwm hu rau macro "dbg!" qhia txog ntau qhov kev sib cav;
- Tus cwj pwm "const", uas txiav txim siab qhov muaj peev xwm ntawm kev siv hauv ib qho ntsiab lus tsis yog qhov qub, yog siv rau txoj hauv kev
Layout::from_size_align_unchecked,
mem::yuav tsum_drop,
NonNull::dangling and
Tsis Null::cast; - Ib feem tshiab ntawm APIs tau raug xa mus rau pawg ruaj khov, suav nrog cov txheej txheem uas tau ua kom ruaj khov
task::Waker, task::Poll,
VecDeque::rotate_left, VecDeque::rotate_right,
Nyeem::read_vectored, Sau::write_vectored,
Iterator ::copy,
BorrowMut (rau cov hlua) thiab str::as_mut_ptr.
Tau qhov twg los: opennet.ru