Rust txoj kev tswj hwm tsis siv neeg nco tshem tawm qhov yuam kev thaum tswj cov taw qhia thiab tiv thaiv cov teeb meem tshwm sim los ntawm kev tswj hwm lub cim xeeb qis, xws li nkag mus rau thaj chaw nco tom qab nws tau tso tawm, tsis muaj qhov taw qhia dereferences, tsis muaj overruns, thiab lwm yam. Tus neeg saib xyuas pob tau tsim los faib cov tsev qiv ntawv, xyuas kom muaj kev sib dhos thiab tswj hwm kev vam meej los ntawm qhov project.
ntsiab
- Kev txhawb nqa rau hom
arrays txhua qhov loj. Yav dhau los, vim qhov tsis muaj peev xwm los txheeb xyuas cov haujlwm dav dav rau txhua qhov muaj nuj nqis, cov tsev qiv ntawv tus qauv tau muab kev txhawb nqa hauv kev txhawb nqa tsuas yog rau cov arrays txog li 32 lub ntsiab lus loj (qhov zoo rau txhua qhov loj me tau txhais tau zoo). Ua tsaug rau cov creation ntawm functionality ntawm tas mus li generics ("const generics"), nws tau los ua tau los txhais cov kev ua generic rau tej array loj, tab sis lawv tseem tsis tau muaj nyob rau hauv cov lus ruaj ntseg nta, txawm hais tias lawv tau siv nyob rau hauv lub compiler thiab yog. tam sim nokoom nrog nyob rau hauv tus qauv tsev qiv ntawv rau array zoo ntawm txhua qhov loj me.Piv txwv li, cov qauv hauv qab no hauv Rust 1.47 yuav luam tawm cov ntsiab lus ntawm ib qho array, txawm hais tias yav dhau los nws yuav ua rau muaj qhov yuam kev:
fn main() {
cia xs = [0; 34];println!("{:?}", xs);
} - Muab cov khoom tso tawm ntawm cov kab luv luv (backtrace), tso tawm thaum muaj xwm txheej ceev. Cov ntsiab lus uas tsis txaus siab rau ntau qhov xwm txheej, tab sis cuam tshuam cov khoom tsim tawm thiab cuam tshuam kev mloog los ntawm cov laj thawj tseem ceeb ntawm qhov teeb meem, raug cais tawm ntawm kab. Txhawm rau rov qab tag nrho cov kab, koj tuaj yeem siv qhov hloov pauv ib puag ncig "RUST_BACKTRACE = puv". Piv txwv li, rau cov cai
fn main() {
poob siab!();
}Yav dhau los, cov kab tau tso tawm hauv 23 theem, tab sis tam sim no nws yuav raug txo kom tsawg
3 kauj ruam uas tso cai rau koj tam sim ntawd tuav lub ntsiab lus:xov 'main' panicked ntawm 'panic meej', src/main.rs:2:5
stack backtrace:
0: std::panicking::begin_panic
ntawm /rustc/dβ¦d75a/library/std/src/panicking.rs:497
1: chaw ua si::main
ntawm ./src/main.rs:2
2: core::ops::function::FnOnce::call_once
ntawm /rustc/dβ¦d75a/library/core/src/ops/function.rs:227 - Lub rustc compiler tau hloov kho los tsim siv
LWM 11 (Xebsiv LLVM ua ib qho backend raucode tiam ). Tib lub sijhawm, lub peev xwm los tsim nrog cov laus LLVMs, mus txog rau version 8, yog khaws cia, tab sis los ntawm lub neej ntawd (hauvxeb-lang/llvm-project ) tam sim no siv LLVM 11. LLVM 11 xav tias yuav tso tawm rau hnub tom ntej. - Ntawm lub Windows platform, rustc compiler muab kev txhawb nqa rau kev ua kom muaj kev tswj xyuas kev ncaj ncees (Control Flow Guard), qhib siv tus chij "-C control-flow-guard". Ntawm lwm lub platforms tus chij no tsis quav ntsej rau tam sim no.
- Ib feem tshiab ntawm APIs tau raug xa mus rau qeb ruaj khov, suav nrog kev ruaj khov
Ident::new_raw,
Ntau yam::is_empty,
RangeInclusive:: yog_empty,
Result::as_deref,
Result::as_deref_mut,
Vec::leak,
pointer::offset_from,
f32:: ua
f64:: ua. - Tus cwj pwm "const", uas txiav txim siab qhov muaj peev xwm ntawm kev siv nws hauv txhua lub ntsiab lus tsis yog qhov qub, yog siv rau hauv cov txheej txheem:
- tshiab rau txhua tus lej uas tsis yog xoom;
- checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub thiab saturating_mul rau tag nrho cov integers;
- yog_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_charispace_control u thiab hom.
- Rau FreeBSD
koom nrog toolkit los ntawm FreeBSD 11.4 (FreeBSD 10 tsis txhawb LLVM 11).
Tau qhov twg los: opennet.ru