රස්ට්ගේ ස්වයංක්රීය මතක කළමනාකරණය සංවර්ධකයා පොයින්ටර් උපාමාරු වලින් නිදහස් කරන අතර නිදහස් පසු මතක ප්රවේශයන්, null pointer dereferences, buffer overruns වැනි පහත් මට්ටමේ මතක හැසිරවීම් වලින් පැන නගින ගැටළු වලින් ආරක්ෂා කරයි. ව්යාපෘතිය මගින් පුස්තකාල බෙදා හැරීම, එකලස් කිරීම සහතික කිරීම සහ පරායත්තතා කළමනාකරණය කිරීම සඳහා පැකේජ කළමනාකරුවෙකු සංවර්ධනය වෙමින් පවතී.
ප්රධාන
- Crates.io public registry සමඟ සහජීවනයෙන් පැවතිය හැකි විකල්ප පැකේජ රෙජිස්ට්රාර් සමඟ වැඩ කිරීමට Cargo පැකේජ කළමනාකරු මෙවලම් එකතු කර ඇත. උදාහරණයක් ලෙස, හිමිකාර යෙදුම් සංවර්ධකයින්ට දැන් Cargo.toml හි පරායත්තතා ලැයිස්තුගත කිරීමේදී භාවිතා කළ හැකි ඔවුන්ගේ පුද්ගලික ලේඛනය භාවිතා කළ හැකි අතර, ඔවුන්ගේ නිෂ්පාදන සඳහා crates.io ට සමාන අනුවාද ආකෘතියක් යෙදිය හැකි අතර, කූඩ දෙකටම පරායත්තතා යොමු කරන්න. io සහ ඔබේම රෙජිස්ට්රි වෙත.
.cargo/config වෙත බාහිර ලේඛන එක් කිරීමට ($HOME හෝ පැකේජ නාමාවලියෙහි පිහිටා ඇත)
සපයා ඇත "[රෙජිස්ට්රි]" කොටස, සහ බාහිර රෙජිස්ට්රි භාවිතා කිරීම සඳහා, "රෙජිස්ට්රි" විකල්පය Cargo.toml හි එක් එක් පරායත්තතා විස්තරය තුළ දර්ශනය වී ඇත. අතිරේක රෙජිස්ට්රියකට සම්බන්ධ වීමට, සත්යාපන ටෝකනය ~/.cargo/credentials ගොනුවේ තබා විධානය ක්රියාත්මක කරන්න.
"භාණ්ඩ පිවිසුම --registry=my-registry" සහ පැකේජයක් ප්රකාශ කිරීමට -
"භාණ්ඩ ප්රකාශනය -registry=my-registry"; - “?” ක්රියාකරු භාවිතා කිරීම සඳහා සම්පූර්ණ සහය එක් කරන ලදී. පරීක්ෂණ වලදී
ආචාර්යවරුන් , ඔබට ලේඛන වලින් උදාහරණ කේතය පරීක්ෂණ ලෙස භාවිතා කිරීමට ඉඩ සලසයි. කලින් ක්රියාකරු
"?" "fn main()" ශ්රිතය හෝ "#[test]" ශ්රිතයන් තුළ පමණක් පරීක්ෂණ ක්රියාත්මක කිරීමේදී දෝෂ හැසිරවීමට භාවිතා කළ හැක; - ක්රියා පටිපාටි මැක්රෝ භාවිතයෙන් අර්ථ දක්වා ඇති අභිරුචි ගුණාංගවල
සපයා ඇත අත්තනෝමතික ටෝකන කට්ටල භාවිතා කිරීමේ හැකියාව (“#[attr($tokens)]”, “#[attr[$tokens]] සහ #[attr{$tokens}]”). මීට පෙර, මූලද්රව්ය තන්තු වචන භාවිතයෙන් ගසක/ප්රත්යාවර්තක ආකාරයෙන් පමණක් සඳහන් කළ හැකි විය, උදාහරණයක් ලෙස “#[foo(bar, baz(quux, foo = “bar”))]”, නමුත් දැන් ගණන් බැලීම් (' #[පරාසය(0. .10)]') සහ "#[බන්ධිත(T: MyTrait)]" වැනි ඉදිකිරීම්; - ස්ථාවර වර්ග (ලක්ෂණ)
සිට උත්සාහ කරන්න иInto උත්සාහ කරන්න , දෝෂ හැසිරවීම සමඟ වර්ග පරිවර්තනයට ඉඩ දීම. උදාහරණයක් ලෙස, integer ආකාරයේ from_be_bytes වැනි ක්රම ආදානය ලෙස array භාවිතා කරයි, නමුත් දත්ත බොහෝ විට Slice වර්ගයකින් පැමිණේ, සහ arrays සහ slices අතර පරිවර්තනය කිරීම අතින් සිදු කිරීම ගැටළු සහගත වේ. නව ලක්ෂණ ආධාරයෙන්, නිශ්චිත මෙහෙයුම .try_into() වෙත ඇමතුමක් හරහා පියාසර කළ හැක, උදාහරණයක් ලෙස, "Lum = u32::from_be_bytes(slice.try_into()?)". සෑම විටම සාර්ථක වන පරිවර්තන සඳහා (උදාහරණයක් ලෙස, වර්ගය u8 සිට u32 දක්වා), දෝෂ වර්ගයක් එකතු කර ඇතනොවරදිනසුලු , විනිවිද පෙනෙන භාවිතයට ඉඩ සලසා දීම
"From" හි පවතින සියලුම ක්රියාත්මක කිරීම් සඳහා TryFrom; - කාර්යය අත්හැර ඇත
CommandExt::before_exec , එය ෆෝක්() ඇමතුමෙන් පසු දෙබලක ළමා ක්රියාවලියක සන්දර්භය තුළ ක්රියාත්මක කරන ලද, exec ධාවනය කිරීමට පෙර හසුරුවන්නෙකුට ක්රියාත්මක කිරීමට ඉඩ සලසයි. එවැනි තත්වයන් යටතේ, ගොනු විස්තර සහ සිතියම්ගත මතක ප්රදේශ වැනි මාපිය ක්රියාවලියේ සමහර සම්පත් අනුපිටපත් කළ හැකි අතර, එය නිර්වචනය නොකළ හැසිරීම් සහ පුස්තකාලවල වැරදි ක්රියාකාරිත්වයට හේතු විය හැක.
පෙර_exec වෙනුවට අනාරක්ෂිත ශ්රිතයක් භාවිතා කිරීම නිර්දේශ කෙරේCommandExt::pre_exec . - බිටු 8 සිට 64 දක්වා ප්රමාණයේ ස්ථායීකෘත සහ අත්සන් නොකළ පරමාණුක පූර්ණ සංඛ්යා වර්ග (උදාහරණයක් ලෙස,
AtomicU8 ), මෙන්ම අත්සන් කරන ලද වර්ගZeroI නොවන [8|16|32|64|128]. - ඕනෑම::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ඇතුළුව, API හි නව කොටසක් ස්ථාවර ප්රවර්ගය වෙත ගෙන ගොස් ඇත. ] සහ SystemTime ක්රම ස්ථායීකරණය කර ඇත ::checked_[add|sub]. iter::from_fn සහ iter:: අනුප්රාප්තික ශ්රිත ස්ථායීකරණය කර ඇත;
- සියලුම නිඛිල වර්ග සඳහා, checked_pow, saturating_pow, wrapping_pow සහ overflowing_pow ක්රම ක්රියාත්මක කෙරේ;
- “-C linker-plugin-lto” ගොඩනැගීමේ විකල්පය සඳහන් කිරීමෙන් සම්බන්ධක අදියරේදී ප්රශස්තකරණයන් සක්රීය කිරීමේ හැකියාව එක් කරන ලදී.
මූලාශ්රය: opennet.ru