เบˆเบฑเบ”เบžเบตเบกเบกเบฒ เบเบฒเบ™เบ›เปˆเบญเบเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเบฅเบฐเบšเบปเบš เป€เบŠเบทเบญเบ 1.43, เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเป‚เบ„เบ‡เบเบฒเบ™ Mozilla. เบžเบฒเบชเบฒเบชเบธเบกเปƒเบชเปˆเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ, เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เปเบฅเบฐเบชเบฐเบซเบ™เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเบฑเบ™เบฅเบธเบ„เบงเบฒเบกเบซเบ™เบฒเปเบซเบ™เป‰เบ™เบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบชเบนเบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเปเบฅเบฐ. runtime.

เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡ Rust เบ›เบปเบ”เบ›เปˆเบญเบเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบˆเบฒเบเบเบฒเบ™เบซเบกเบนเบ™เปƒเบŠเป‰เบ•เบปเบงเบŠเบตเป‰ เปเบฅเบฐเบ›เบปเบเบ›เป‰เบญเบ‡เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบเบเบฒเบ™เบซเบกเบนเบ™เปƒเบŠเป‰เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเบณเบฅเบฐเบ”เบฑเบšเบ•เปเปˆเบฒ เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเบžเบฒเบเบซเบผเบฑเบ‡เบ—เบตเปˆเบšเปเปˆเป€เบชเบเบ„เปˆเบฒ, เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบ•เบปเบงเบŠเบตเป‰ null, buffer overruns, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบŠเบธเบ”เบเปเบฒเบฅเบฑเบ‡เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบžเบทเปˆเบญเปเบˆเบเบขเบฒเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”, เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบ›เบฐเบเบญเบšเปเบฅเบฐเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเป‚เบ”เบเป‚เบ„เบ‡เบเบฒเบ™. เบชเบดเบ™เบ„เป‰เบฒ, เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เปƒเบ™เบซเบ™เบถเปˆเบ‡เบ„เบฅเบดเบ. เบซเปเบชเบฐเปเบธเบ”เป„เบ”เป‰เบ–เบทเบเบฎเบญเบ‡เบฎเบฑเบšเป€เบžเบทเปˆเบญเป‚เบฎเบ”เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” crates.io.

เบ•เบปเป‰เบ™โ€‹เบ•เป เบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒ:

  • Macros เปƒเบซเป‰เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐ (เบฅเบฑเบเบชเบฐเบ™เบฐ), เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” (impl) เบซเบผเบทเบ•เบฑเบ™เบžเบฒเบเบ™เบญเบ. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

    macro_rules! mac_trait {
    ($i:item) => {
    เบฅเบฑเบเบชเบฐเบ™เบฐ T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    เบˆเบฐโ€‹เบ™เปเบฒโ€‹เป„เบ›โ€‹เบชเบนเปˆโ€‹เบเบฒเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹:

    เบฅเบฑเบเบชเบฐเบ™เบฐ T {
    fn foo() {}
    }

  • เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบŠเบญเบเบ„เบปเป‰เบ™เบซเบฒเบ›เบฐเป€เบžเบ” primitives, เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เปเบฅเบฐเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ–เบฒเบ™เบชเบญเบ‡.
    เบ•เบปเบงเบขเปˆเบฒเบ‡, เบฅเบฐเบซเบฑเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰, เป€เบŠเบดเปˆเบ‡เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”, เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เบฅเบงเบšเบฅเบงเบกเป„เบ”เป‰ (Rust เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบเปเบฒเบ™เบปเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบงเปˆเบฒ 0.0 เปเบฅเบฐ & 0.0 เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ” f32):

    เปƒเบซเป‰ n: f32 = 0.0 + &0.0;

  • เบ•เบปเบงเบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปƒเบซเบกเปˆ CARGO_BIN_EXE_{name} เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเปƒเบชเปˆ Cargo, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบเปเบฒเบ™เบปเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบฅเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป€เบ•เบฑเบกเป„เบ›เบซเบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบชเปˆเบงเบ™ "[[bin]]" เบ‚เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ”.
  • เบ–เป‰เบฒเบ‚เปเป‰เบ„เบงเบฒเบกเบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เปƒเบŠเป‰เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเป€เบŠเบฑเปˆเบ™ "#[cfg()]".
  • เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เป‚เบ”เบเบเบปเบ‡เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเปเบฅเบฐเป€เบชเบ”เบชเปˆเบงเบ™, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเป‚เบกเบ”เบนเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™ u32::MAX เบซเบผเบท f32::NAN เบ—เบฑเบ™เบ—เบตเป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เบฅเบฐเบšเบธ "เปƒเบŠเป‰ std::u32" เปเบฅเบฐ "เปƒเบŠเป‰ std::f32".
  • เป€เบžเบตเปˆเบกเป‚เบกเบ”เบนเบ™เปƒเบซเบกเปˆ primitive, เป€เบŠเบดเปˆเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบ Re-exports Rust primitive types, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™ macro เปเบฅเบฐเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบ›เบฐเป€เบžเบ”เบšเปเปˆเป„เบ”เป‰เป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰.
  • เบชเปˆเบงเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡ APIs เป„เบ”เป‰เบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡, เบฅเบงเบกเบ—เบฑเบ‡เบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡

    เป€เบกเบทเปˆเบญ::is_completed,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 เปเบฅเบฐ
    iter::เบ„เบฑเป‰เบ‡เบ”เบฝเบง_เบเบฑเบš.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™