Rust ၏ အလိုအလျောက်မှတ်ဉာဏ်စီမံခန့်ခွဲမှုသည် developer အား pointer ခြယ်လှယ်ခြင်းမှ လွတ်မြောက်စေပြီး အခမဲ့ memory access များ၊ null pointer dereferences၊ buffer overruns ကဲ့သို့သော အဆင့်နိမ့်မှတ်ဉာဏ် ခြယ်လှယ်မှုမှ ဖြစ်ပေါ်လာသည့် ပြဿနာများကို ကာကွယ်ပေးပါသည်။ စာကြည့်တိုက်များကို ဖြန့်ဝေရန်၊ စုဝေးမှုကို သေချာစေရန်နှင့် ပရောဂျက်မှ မှီခိုမှုများကို စီမံခန့်ခွဲရန် ပက်ကေ့ဂျ်မန်နေဂျာကို တီထွင်နေပါသည်။
အဓိက
- rustc compiler တွင်
ပေးထားသည်။ ကုဒ်ပရိုဖိုင်းရလဒ်များပေါ်အခြေခံ၍ ပိုမိုကောင်းမွန်အောင်ပံ့ပိုးမှု (PGO၊ Profile-Guided Optimization)၊
ပရိုဂရမ်လုပ်ဆောင်နေစဉ်အတွင်း စုဆောင်းထားသော ကိန်းဂဏန်းများကို ခွဲခြမ်းစိတ်ဖြာမှုအပေါ် အခြေခံ၍ သင့်အား ပိုမိုသင့်လျော်သောကုဒ်ကို ဖန်တီးနိုင်စေမည်ဖြစ်သည်။ ပရိုဖိုင်တစ်ခုထုတ်လုပ်ရန်၊ "-C ပရိုဖိုင်-ထုတ်လုပ်ရန်" အလံကို ပံ့ပိုးပေးထားပြီး စည်းဝေးပွဲအတွင်း ပရိုဖိုင်ကို အသုံးပြုရန် - "-C ပရိုဖိုင်-အသုံးပြုမှု" (အစပိုင်းတွင် ပရိုဂရမ်ကို ပထမအလံဖြင့် စုစည်းထားပြီး၊ လည်ပတ်နေပြီး ဖန်တီးပြီးနောက်၊ ပရိုဖိုင်၊ ၎င်းကို ဒုတိယအလံဖြင့် ပြန်လည်စုစည်းထားသည်။ - ကွန်ဆိုးလ်အက်ပလီကေးရှင်းများကို လျင်မြန်စွာစမ်းသပ်ရန်အတွက် အသုံးပြုရအဆင်ပြေသည့် “ကုန်တင်ကုန်ချပြေးခြင်း” အမိန့်ကို အကောင်အထည်ဖော်သည့်အခါ၊ အထုပ်ထဲတွင် စီစဥ်လုပ်ဆောင်နိုင်သောဖိုင်များစွာရှိလျှင် လည်ပတ်ရန် လုပ်ဆောင်နိုင်သောဖိုင်ကို အလိုအလျောက်ရွေးချယ်နိုင်သည့်စွမ်းရည်ကို ပေါင်းထည့်ထားသည်။ လုပ်ဆောင်ရမည့် ပုံသေဖိုင်ကို [package] အပိုင်းရှိ ပက်ကေ့ချ် ဘောင်များပါရှိသည့် default-run ညွှန်ကြားချက်မှတဆင့် ဆုံးဖြတ်သည်၊ ၎င်းသည် သင် “ကုန်တင်ကုန်ချထွက်ခြင်း” အလံမှတစ်ဆင့် ဖိုင်အမည်ကို အတိအလင်း သတ်မှတ်ခြင်းမှ ရှောင်ကြဉ်နိုင်စေပါသည်။
- ယခင်က ပေးခဲ့သည့် "ကုန်တင်ကုန်ချရောင်းချသူ" အမိန့်
သီးခြားအထုပ် . ညွှန်ကြားချက်သည် သင့်အား ဒေသဆိုင်ရာ မှီခိုမှု၏ မိတ္တူတစ်ခုဖြင့် အလုပ်ကို စုစည်းခွင့်ပြုသည် - "ကုန်တင်ရောင်းချသူ" ကို လုပ်ဆောင်ပြီးနောက်၊ ပရောဂျက်၏ မှီခိုမှုဆိုင်ရာ အရင်းအမြစ်ကုဒ်အားလုံးကို crates.io မှ ဒေသခံလမ်းညွှန်တစ်ခုသို့ ဒေါင်းလုဒ်လုပ်ကာ၊ ထို့နောက် သေတ္တာများကို မသုံးဘဲ အလုပ်အတွက်အသုံးပြုနိုင်ပါသည်။ io ( command ကိုလုပ်ဆောင်ပြီးနောက်၊ တည်ဆောက်မှုများအတွက် directory ကိုအသုံးပြုရန် configuration ကိုပြောင်းလဲခြင်းအတွက်အရိပ်အမြွက်ပြသထားသည်)။ ထုတ်ဝေမှုနှင့်အတူ မော်ကွန်းတိုက်တစ်ခုတွင် မှီခိုမှုအားလုံးကို ထုပ်ပိုးခြင်းဖြင့် rustc compiler ၏ပေးပို့မှုကို စုစည်းရန် ဤအင်္ဂါရပ်ကို အသုံးပြုထားပြီးဖြစ်သည်။ - အမျိုးအစား aliases ကို အသုံးပြု၍ enum ရွေးချယ်မှုများသို့ လင့်ခ်များကို ဖန်တီးနိုင်ပြီဖြစ်သည် (ဥပမာ၊ function “fn increment_or_zero(x: ByteOption)” ၏ကိုယ်ထည်တွင် “ByteOption::None => 0”) ကိုသတ်မှတ်နိုင်သည်၊ တွက်ချက်မှုတည်ဆောက်ပုံများ (‹‹ MyType‹.. ››::option => N) သို့မဟုတ် ကိုယ်တိုင်ဝင်ရောက်ခွင့်များ (blocks c &self တွင် သင်သည် “Self::Quarter => 25” ဟု သတ်မှတ်နိုင်သည်);
- မက်ခရိုတွင် အမည်မဖော်လိုသည့် ကိန်းသေများကို ဖန်တီးနိုင်သည့် စွမ်းရည်ကို ထည့်သွင်းထားသည်။ "const" တွင် ဒြပ်စင်အမည်ကို သတ်မှတ်ခြင်းအစား၊ သင်သည် ထပ်တလဲလဲမဟုတ်သော ခွဲခြားသတ်မှတ်မှုကို တက်ကြွစွာရွေးချယ်ရန် "_" စာလုံးကို အသုံးပြု၍ မက်ခရိုကို ထပ်မံခေါ်ဆိုသည့်အခါ အမည်ကွဲလွဲမှုများကို ရှောင်ရှားနိုင်ပါပြီ။
- AlignN‹T› ဖွဲ့စည်းတည်ဆောက်ပုံအား ချိန်ညှိခြင်းနှင့် AlignN‹MyEnum› ကိုအသုံးပြုခြင်းနှင့် AlignN‹MyEnum› ကိုအသုံးပြုခြင်းနှင့် ဆင်တူသော syntax ကိုအသုံးပြု၍ enums ဖြင့် "#[repr(align(N))" attribute ကို အသုံးပြုရန် စွမ်းရည်ကို ပေါင်းထည့်ခဲ့သည်။
- API ၏ အစိတ်အပိုင်းအသစ်တစ်ခုကို BufReader::buffer၊ BufWriter::buffer နှင့် အပါအဝင် တည်ငြိမ်သောအမျိုးအစားသို့ ရွှေ့ထားပါသည်။
ဆဲလ်-:from_mut၊
ဆဲလ်-:as_slice_of_cells၊
DoubleEndedIterator-:nth_back၊
ရွေးချယ်မှု::xor
{i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits နှင့်
slice::copy_within။
ထို့အပြင်၎င်းကိုမှတ်သားနိုင်သည်။
source: opennet.ru