Rust 1.42 د پروګرام کولو ژبې خپرول

خپور شوی د سیسټم پروګرام کولو ژبه خپرول زنګ 1.42د موزیلا پروژې لخوا تاسیس شوی. ژبه د حافظې خوندیتوب باندې تمرکز کوي، د اتوماتیک حافظې مدیریت چمتو کوي، او د کثافاتو راټولونکي کارولو پرته د لوړې دندې موازي کولو لپاره وسایل چمتو کوي. د چلولو وخت.

د زنګ اتوماتیک حافظه مدیریت پراختیا کونکی د پوینټر له مینځه وړلو څخه خلاصوي او د ټیټې کچې حافظې لاسوهنې څخه رامینځته شوي ستونزو څخه ساتي ، لکه د وړیا حافظې لاسرسي ، د نول پوینټر ډیریفرنسونه ، بفر اوورونونه او داسې نور. د بسته بندۍ مدیر د کتابتونونو توزیع کولو لپاره رامینځته کیږي ، د غونډې ډاډ ترلاسه کوي او د پروژې لخوا انحصار اداره کوي. کارګو، تاسو ته اجازه درکوي په یو کلیک کې د برنامې لپاره اړین کتابتونونه ترلاسه کړئ. یو ذخیره د کتابتونونو کوربه کولو لپاره ملاتړ کیږي crates.io.

اصلي نوښتونه:

  • زیاته کړه د سلائسونو د برابرولو برخو لپاره د ټیمپلیټونو ملاتړ (متحرک سرې، ټوټې). پخوا، دقیقو میچونو ته اجازه ورکول کیده، مګر اوس دا ممکنه ده چې د ".." په نښه شوي ساختمانونه وکاروئ ترڅو د صف پاتې عناصر پوښښ کړي. د مثال په ډول:

    fn foo(لغات: &[&str]) {
    د کلمو سره سمون

    // د صف پیل عناصر چک کوي او سترګې پټوي
    عناصر یې تعقیبوي
    ["سلام"، "نړۍ"، "!", ..] => چاپ!("سلام نړۍ!"),

    // لومړی دوه عناصر "فو" او "بار" چک کوي، او پاتې نور مهم ندي
    ["فو", "بار", ..] => چاپول!("باز"),

    // هرڅه په پام کې ونیسئ، مګر وروستی عنصر باید "!" وي.
    [.., “!”] => چاپول!("!!!"),

    // په پیل کې موږ هر څه شامل کوو پرته له وروستي عنصر، کوم چې باید "z" وي
    [start@.., "z"] => println!("پیل کیږي: {:?}", پیل)

    // په پای کې موږ د لومړي عنصر پرته هرڅه واچوو، کوم چې باید "a" وي.
    ["a", end @ ..] => println!("پدې سره پای ته رسیږي: {:?}"، پای)

    rest => println!("{:?}", آرام),
    }
    }

  • یو نوی میکرو "میچونه!" اضافه کړل، کوم چې د ان پټ په توګه بیان او نمونه اخلي، او "ریښتیا" بیرته راګرځي که چیرې نمونه د بیان سره سمون ولري. کينډۍ کولی شي "|" عملیات وکاروي او "که".

    د self.partial_cmp(نور) {
    ځینې ​​(کم) => ریښتیا،
    _ => دروغ،
    }

    میچونه!(self.partial_cmp(نور)، ځینې(لږ))

    let foo = 'f';
    assert!(match!(foo, 'A'..='Z' | 'a'..='z'));

    let bar = ځینې(4)؛
    assert!(match!(bar, Some(x) که x > 2));

  • د ډار پیغامونو کې ښودل شوي کله چې په غلط ډول کارول کیږي
    ډولونه اختیار او پایله، اوس د لاین شمیرې د کوډ سره د لینک سره وښایئ چې ستونزه لرونکی کال یې کړی ، د دې پرځای چې په لیبکور کې د زنګ پلي کولو کوډونو لینکونو سره. د مثال په توګه، بدلون د خلاصولو لپاره زنګونه اغیزه کوي او په اختیار کې تمه لري:: هیڅ نه، یا د پایلې ډول کې د unwrap_err، expect، expect_err، او ورته میتودونو کارولو په وخت کې کریش کیږي.

  • د کارګو بسته مدیر د پروسیژر میکرو سره کڅوړو لپاره د "بهرني" بلاک کې د "proc_macro crate" اتوماتیک بدیل چمتو کوي. دا بدلون د "استعمال" لارښود ته اجازه ورکوي چې په کوډ کې د "extern crate proc_macro؛" مشخص کولو پرته پروسیژر میکرو باندې پلي شي. د مثال په توګه، که چیرې برنامه د "proc_macro:: TokenStream استعمال کړئ" کرښه کاروي، نو بیا به کوډ اوس کار کوي که "extern crate proc_macro؛" له هغې څخه لیرې شي.
  • د معیاري کتابتون ظرفیتونه پراخ شوي دي. په دې کې:: خالي زیاته کړه د هر T ارزښتونو لپاره ملاتړ لیږل او همغږي کول.
    د کال پین::{map_unchecked, map_unchecked_mut} سپارل د "سایز" پلي کولو لپاره د ډول ارزښت بیرته ورکولو څخه.
    په io::کرسر کې پلي شوي PartialEq او Eq. د "const" خاصیت د ثابتو پر ځای په هر شرایطو کې د کارولو امکان ټاکي، تطبیق شوی د ترتیب لپاره::نوی میتود.

  • د API یوه نوې برخه باثباته کټګورۍ ته لیږدول شوې، په شمول د ثبات لرونکي CondVar::wait_while، CondVar::wait_timeout_while،
    DebugMap::key, DebugMap::value,
    په لاسي ډول ډراپ:: واخله،
    ptr::slice_from_raw_parts_mut او ptr::slice_from_raw_parts.

  • تېروتنه::تفصیل طریقه له پامه غورځول شوې ده.
  • د armv7a-none-eabi او riscv64gc-unknown-linux-gnu پلیټ فارمونو لپاره د دویمې کچې ملاتړ چمتو کړی. د riscv64gc-unknown-linux-gnu پلیټ فارم لپاره د معیاري کتابتون لپاره ملاتړ چمتو شوی.
    د ایپل 32-bit پلیټ فارمونه کم شوی د ملاتړ دریمې درجې پورې، کوم چې بنسټیز ملاتړ معنی لري، مګر د اتوماتیک ازموینې او د رسمي ودانیو خپرولو پرته. په ملاتړ کې ټیټوالی د دې له امله دی چې ایپل نور د 32-bit پلیټ فارمونو ملاتړ نه کوي.

سرچینه: opennet.ru

Add a comment