د زنګ اتوماتیک حافظه مدیریت پراختیا کونکی د پوینټر له مینځه وړلو څخه خلاصوي او د ټیټې کچې حافظې لاسوهنې څخه رامینځته شوي ستونزو څخه ساتي ، لکه د وړیا حافظې لاسرسي ، د نول پوینټر ډیریفرنسونه ، بفر اوورونونه او داسې نور. د بسته بندۍ مدیر د کتابتونونو توزیع کولو لپاره رامینځته کیږي ، د غونډې ډاډ ترلاسه کوي او د پروژې لخوا انحصار اداره کوي.
اصلي
- د کارګو کڅوړې مدیر د بدیل کڅوړې راجسټری سره کار کولو لپاره وسیلې اضافه کړې چې کولی شي د crates.io عامه راجسټری سره یوځای پاتې شي. د مثال په توګه ، د ملکیت غوښتنلیکونو پراختیا کونکي اوس کولی شي خپل شخصي راجسټري وکاروي ، کوم چې په Cargo.toml کې د انحصارونو لیست کولو پرمهال کارول کیدی شي ، او د دوی محصولاتو لپاره crates.io ته ورته نسخه ماډل پلي کړي ، او همدارنګه دواړه کریټونو ته انحصار راجع کړي. io او ستاسو خپل راجستر ته.
په .cargo/config کې د بهرنیو راجسترونو اضافه کولو لپاره (په $ HOME یا د بسته بندۍ لارښود کې موقعیت لري)
چمتو شوی برخه "[رجسټري]"، او د بهرنۍ راجسټرۍ کارولو لپاره، د "رجسټري" اختیار په Cargo.toml کې د هر انحصار په تفصیل کې څرګند شوی. د اضافي راجسټری سره وصل کیدو لپاره ، په ساده ډول د تصدیق نښه په ~/.cargo/credentials فایل کې ځای په ځای کړئ او کمانډ چل کړئ
"د کارګو ننوتنه --registry=my-registry" او د کڅوړې خپرولو لپاره -
"د کارګو خپرول -رجسټري = زما-رجسټري"؛ - د "؟" آپریټر کارولو لپاره بشپړ ملاتړ اضافه شوی. په ازموینو کې
دوکتورا ، تاسو ته اجازه درکوي چې د ازموینې په توګه د اسنادو څخه د مثال کوډ وکاروئ. پخوا چلونکی
"؟" یوازې د "fn main()" فنکشن یا "#[test]" دندو کې شتون کې د ازموینې اجرا کولو پرمهال د غلطیو اداره کولو لپاره کارول کیدی شي؛ - په دودیز ځانګړتیاو کې چې د طرزالعمل میکرو په کارولو سره تعریف شوي
چمتو شوی د ټوکنونو د خپلسري سیټونو کارولو وړتیا ("#[attr($tokens)]"، "#[attr[$tokens]] او #[attr{$tokens}]"). پخوا، عناصر یوازې د ونې / تکراري بڼه کې د سټینګ لیکونو په کارولو سره مشخص کیدی شي، د بیلګې په توګه "#[foo(bar, baz(quux, foo = "bar"))]"، مګر اوس دا ممکنه ده چې د شمیرو کارول (' #[رینج(0. .10)]') او ساختمانونه لکه "#[بند(T: MyTrait)]"؛ - مستحکم ډولونه (خصوصیت)
له دې څخه هڅه وکړئ иهڅه وکړئ د غلطۍ سمبالولو سره د ډول تبادلو ته اجازه ورکوي. د مثال په توګه، د انټیجر ډولونو سره د from_be_bytes په څیر میتودونه د ان پټ په توګه سرې کاروي، مګر ډاټا ډیری وختونه د سلائس ډول کې راځي، او د صفونو او سلائسو ترمنځ بدلول په لاسي ډول ترسره کول ستونزمن دي. د نوو ځانګړتیاوو په مرسته، ټاکل شوی عملیات په الوتنه کې د .try_into() ته د زنګ وهلو له لارې ترسره کیدی شي، د بیلګې په توګه، "let num = u32::from_be_bytes(slice.try_into()؟)". د تبادلو لپاره چې تل بریالي وي (د مثال په توګه، له u8 څخه تر u32 پورې)، د تېروتنې ډول اضافه شویعصبي د شفاف استعمال اجازه ورکوي
د "څخه" د ټولو موجوده پلي کولو لپاره هڅه وکړئ؛ - فعالیت له مینځه وړل شوی
CommandExt::before_exec ، کوم چې یو هینډلر ته اجازه ورکړه چې د exec چلولو دمخه اعدام شي ، کوم چې د فورک() زنګ وروسته د ماشوم پروسې په شرایطو کې اعدام شوی و. په داسې شرایطو کې، د اصلي پروسې ځینې سرچینې، لکه د فایل تشریح کونکي او نقشه شوي حافظې ساحې، کیدای شي نقل شي، کوم چې کولی شي د کتابتونونو ناسم چلند او ناسم عملیات المل شي.
دا سپارښتنه کیږي چې د before_exec پرځای یو ناامنه فعالیت وکاروئCommandExt::pre_exec . - ثابت شوي لاسلیک شوي او نه لاسلیک شوي اټومي عدد ډولونه چې اندازه یې له 8 څخه تر 64 بټونو پورې وي (د مثال په توګه،
اټوميU8 )، همدارنګه لاسلیک شوي ډولونهغیر صفر [8|16|32|64|128]. - د API یوه نوې برخه مستحکم کټګورۍ ته لیږدول شوې، پشمول د Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] او د SystemTime میتودونه ثبات شوي دي ::checked_[add|sub]. د iter::from_fn او iter::د جانشین فعالیتونه ثبات لري؛
- د ټولو عددي ډولونو لپاره، checked_pow، saturating_pow، wrapping_pow او overflowing_pow میتودونه پلي کیږي؛
- د لینک کولو مرحله کې د "-C لینکر-پلگ ان-lto" جوړونې اختیار مشخص کولو سره د اصلاح کولو وړتیا اضافه کړه.
سرچینه: opennet.ru