Rust ၏ အလိုအလျောက်မှတ်ဉာဏ်စီမံခန့်ခွဲမှုသည် developer အား pointer ခြယ်လှယ်ခြင်းမှ လွတ်မြောက်စေပြီး အခမဲ့ memory access များ၊ null pointer dereferences၊ buffer overruns ကဲ့သို့သော အဆင့်နိမ့်မှတ်ဉာဏ် ခြယ်လှယ်မှုမှ ဖြစ်ပေါ်လာသည့် ပြဿနာများကို ကာကွယ်ပေးပါသည်။ စာကြည့်တိုက်များကို ဖြန့်ဝေရန်၊ စုဝေးမှုကို သေချာစေရန်နှင့် ပရောဂျက်မှ မှီခိုမှုများကို စီမံခန့်ခွဲရန် ပက်ကေ့ဂျ်မန်နေဂျာကို တီထွင်နေပါသည်။
အဓိက
- Macros သည် ဒြပ်စင်များ၏ အပိုင်းအစများကို စရိုက်များ (စရိုက်)၊ အကောင်အထည်ဖော်မှုများ (impl) သို့မဟုတ် ပြင်ပလုပ်ကွက်များအဖြစ် ပြောင်းလဲရန် စွမ်းဆောင်နိုင်မှုကို ပေးသည်။ ဥပမာအားဖြင့်:
မက်ခရို_စည်းမျဉ်းများ။ mac_trait {
($i:item) => {
စရိုက် T { $i }
}
}
mac_trait။ {
fn foo() {}
}မျိုးဆက်ဆီသို့ ဦးတည်လိမ့်မည်-
စရိုက် T {
fn foo() {}
} - ရှေးရိုးစွဲများ၊ ကိုးကားမှုများနှင့် ဒွိစစ်ဆင်ရေးများ၏ အမျိုးအစားကို ပိုမိုကောင်းမွန်စွာ ထောက်လှမ်းခြင်း။
ဥပမာအားဖြင့်၊ ယခင်က error ဖြစ်စေခဲ့သော အောက်ပါကုဒ်သည် ယခု compile လုပ်နိုင်တော့မည် (ယခု Rust သည် 0.0 နှင့် &0.0 သည် အမျိုးအစား f32 ဖြစ်ရမည် ဖြစ်ကြောင်း မှန်ကန်စွာ ဆုံးဖြတ်သည်)။n: f32 = 0.0 + &0.0;
- ပေါင်းစည်းမှုစမ်းသပ်မှုများတည်ဆောက်သောအခါတွင် သတ်မှတ်ပေးထားသည့် ဝန်းကျင်ပြောင်းလဲနိုင်သော CARGO_BIN_EXE_{name} ကို Cargo သို့ ပေါင်းထည့်လိုက်ပြီး၊ ၎င်းသည် ပက်ကေ့ဂျ်၏ “[[bin]]” ကဏ္ဍတွင် သတ်မှတ်ထားသော လုပ်ဆောင်နိုင်သောဖိုင်ဆီသို့ လမ်းကြောင်းအပြည့်အစုံကို ဆုံးဖြတ်နိုင်စေမည်ဖြစ်သည်။
- အကယ်၍ ထုတ်ပြန်ချက်များသည် "#[cfg()]" ကဲ့သို့သော အင်္ဂါရပ်များကို အသုံးပြုရန် ခွင့်ပြုထားသည်။
- စာကြည့်တိုက်သည် မော်ဂျူးတစ်ခုကို မတင်သွင်းဘဲ ကိန်းပြည့်နှင့် အပိုင်းကိန်းအမျိုးအစားများအတွက် ဆက်စပ်ကိန်းသေများကို တိုက်ရိုက်အသုံးပြုရန် စွမ်းရည်ကို ပံ့ပိုးပေးပါသည်။ ဥပမာအားဖြင့်၊ သင်သည် “use std::u32” နှင့် “use std::f32” ကို ဦးစွာမသတ်မှတ်ဘဲ u32::MAX သို့မဟုတ် f32::NAN ကို ချက်ချင်းရေးနိုင်သည်။
- မော်ဂျူးအသစ် ထပ်ထည့်ထားပါတယ်။
မူလဖြစ်သော Macro ရေးရန် လိုအပ်သည့်အခါ ဥပမာ Rust primitive အမျိုးအစားများကို ပြန်လည်တင်ပို့ပြီး အမျိုးအစားများကို မဝှက်ထားကြောင်း သေချာပါစေ။ - APIs ၏ အပိုင်းအသစ်ကို တည်ငြိမ်အောင်ပြုလုပ်ခြင်းအပါအဝင် တည်ငြိမ်သောအမျိုးအစားသို့ လွှဲပြောင်းထားပါသည်။
ပြီးသည်နှင့်::is_completed၊
f32::LOG10_2၊
f32::LOG2_10၊
f64::LOG10_2၊
f64::LOG2_10 နှင့်
iter::တစ်ကြိမ်_ဖြင့်။
source: opennet.ru