เบเบฒเบ™เบญเบญเบเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฃเปเบเบฃเบก Rust 2021 (1.56)

เบเบฒเบ™เบ›เปˆเบญเบเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบฅเบฐเบšเบปเบš Rust 1.56, เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเป‚เบ„เบ‡เบเบฒเบ™ Mozilla, เปเบ•เปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เบญเบธเบ›เบฐเบ–เปเบฒเบ‚เบญเบ‡เบญเบปเบ‡เบเบฒเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบ—เบตเปˆเบšเปเปˆเบซเบงเบฑเบ‡เบœเบปเบ™เบเปเบฒเป„เบฅ Rust Foundation, เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ. เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบ•เบปเบงเป€เบฅเบเบชเบฐเบšเบฑเบšเบ›เบปเบเบเบฐเบ•เบด, เบเบฒเบ™เบ›เปˆเบญเบเบญเบญเบเบกเบฒเบเบฑเบ‡เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป€เบ›เบฑเบ™ Rust 2021 เปเบฅเบฐเบซเบกเบฒเบเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเปƒเบ™เป„เบฅเบเบฐเบชเบฒเบกเบ›เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. Rust 2021 เบเบฑเบ‡เบˆเบฐเป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบชเบฒเบกเบ›เบตเบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒ, เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ›เปˆเบญเบ Rust 2018 เบเบฒเบเป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบžเบฒเบชเบฒเปƒเบ™เบชเบฒเบกเบ›เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ.

เป€เบžเบทเปˆเบญเบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ›เป‰เบฒเบ "2015", "2018" เปเบฅเบฐ "2021" เปƒเบ™เป‚เบ›เบผเปเบเบผเบกเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบšเบฑเบ™เบ”เบฒเป‚เบ„เบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเปเบ–เบšเบžเบฒเบชเบฒเบ‚เบญเบ‡เบฅเบฑเบ”เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบšเบชเบฐเบšเบฑเบšเบ—เบตเปˆเป€เบฅเบทเบญเบเบ‚เบญเบ‡ Rust. เบชเบฐเบšเบฑเบšเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเป€เบžเบทเปˆเบญเปเบเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เปเบฅเบฐเบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™ metadata เบ‚เบญเบ‡เบŠเบธเบ”เบชเบดเบ™เบ„เป‰เบฒเบœเปˆเบฒเบ™เบŠเปˆเบญเบ‡ "เบชเบฐเบšเบฑเบš" เปƒเบ™เบชเปˆเบงเบ™ "[เบŠเบธเบ”]". เบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเบฐเบšเบฑเบš "2018" เบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบšเปƒเบ™เบ—เป‰เบฒเบเบ›เบต 2018 เปเบฅเบฐเบเบฑเบ‡เบเบงเบกเป€เบญเบปเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เบทเปˆเบกเบญเบตเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบšเปเปˆเบ—เปเบฒเบฅเบฒเบเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰. เบชเบฐเบšเบฑเบšเบ›เบต 2021 เบฅเบงเบกเบกเบตเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเปเบ•เบเบซเบฑเบเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบชเบฐเป€เปœเบตเปƒเบซเป‰เบขเบนเปˆเปƒเบ™เบชเบฐเบšเบฑเบš 1.56 เบ›เบฐเบˆเบธเบšเบฑเบ™ เปเบฅเบฐ เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบญเบฐเบ™เบธเบกเบฑเบ”เป€เบžเบทเปˆเบญเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”. เบ™เบญเบเป€เบซเบ™เบทเบญเป„เบ›เบˆเบฒเบเบžเบฒเบชเบฒเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™เบเบฑเบ‡เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเปเบฅเบฐเป€เบญเบเบฐเบชเบฒเบ™.

เบ„เบงเบฒเบกเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เบ•เบปเป‰เบ™เบ•เปเบ—เบตเปˆเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™ Rust 2021:

  • เบเบฒเบ™เบˆเบฑเบšเบžเบฒเบšเปเบšเบšเปเบเบเบเบฑเบ™เปƒเบ™เบเบฒเบ™เบ›เบดเบ” - เบ›เบดเบ”เบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบ—เบถเบเบŠเบทเปˆเปเบ•เปˆเบฅเบฐเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปเบ—เบ™เบ•เบปเบงเบฅเบฐเบšเบธเบ—เบฑเบ‡เปเบปเบ”เป„เบ”เป‰. เบ•เบปเบงเบขเปˆเบฒเบ‡, "|| ax + 1 "เบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเบˆเบฑเบš "เบ‚เบงเบฒเบ™" เปเบ—เบ™ "a".
  • เบฅเบฑเบเบชเบฐเบ™เบฐ IntoIterator เบชเปเบฒเบฅเบฑเบš array: array.into_iter() เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบญเบปเบ‡เบ›เบฐเบเบญเบš array เป‚เบ”เบเบ„เปˆเบฒ, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡.
  • เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ โ€œ|โ€ เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™ macro_rules (Boolean OR) เปƒเบ™เบฎเบนเบšเปเบšเบš - เบ•เบปเบงเบฅเบฐเบšเบธ ":pat" เปƒเบ™เบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป€เบ„เบปเบฒเบฅเบปเบš "A | เบ‚".
  • เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบŠเบธเบ”เบชเบดเบ™เบ„เป‰เบฒเบ›เบฐเบเบญเบšเบกเบตเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบ•เบปเบงเปเบเป‰เป„เบ‚เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเบชเบญเบ‡, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบตเปˆเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ Rust 1.51.
  • เบฅเบฑเบเบชเบฐเบ™เบฐ TryFrom, TryInto เปเบฅเบฐ FromIterator เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เป‚เบกเบ”เบนเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ prelude.
  • The panic!(..) เปเบฅเบฐ assert!(expr,..) macros now always use format_args!(..) เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเบชเบฐเบ•เบฃเบดเบ‡, เบ„เป‰เบฒเบเบ„เบทเบเบฑเบš println!().
  • เบ„เบณเบงเปˆเบฒ ident#, identยป..." เปเบฅเบฐ ident'...' เบ–เบทเบเบชเบฐเบซเบ‡เบงเบ™เป„เบงเป‰เปƒเบ™ syntax เบžเบฒเบชเบฒ.
  • เบเป‰เบฒเบเบ„เปเบฒเป€เบ•เบทเบญเบ™ bare_trait_objects เปเบฅเบฐ ellipsis_inclusive_range_patterns เป„เบ›เบซเบฒเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”.

เปƒเปเปˆเปƒเบ™ Rust 1.56:

  • เปƒเบ™ Cargo.toml, เปƒเบ™เบžเบฒเบ โ€œ[package]โ€, เบžเบฒเบเบชเบฐ เบซเบ™เบฒเบก rust-version เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก, เป‚เบ”เบเบœเปˆเบฒเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบชเบฐเบšเบฑเบšเบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ‚เบญเบ‡ Rust เบชเปเบฒเบฅเบฑเบšเบŠเบธเบ” crate เป„เบ”เป‰. เบ–เป‰เบฒเบชเบฐเบšเบฑเบšเบ›เบฐเบˆเบธเบšเบฑเบ™เบšเปเปˆเบเบปเบ‡เบเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰, Cargo เบˆเบฐเบขเบธเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”.
  • เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ "binding @ เบฎเบนเบšเปเบšเบš" เบชเบฐเปเบ”เบ‡เบญเบญเบ, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบฐเบšเบธเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก (เบ•เบปเบงเบขเปˆเบฒเบ‡, "let matrix @ Matrix { row_len, .. } = get_matrix();").
  • เบžเบฒเบเบชเปˆเบงเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡ API เป„เบ”เป‰เบ–เบทเบเบเป‰เบฒเบเป„เบ›เบขเบนเปˆเปƒเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡, เบฅเบงเบกเบ—เบฑเบ‡เบงเบดเบ—เบตเบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เปˆเบฒเบ‡เป†เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • เบซเบผเบฑเบ::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::shrink_to
    • String::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "const", เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบกเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆ, เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ.
    • std::mem::transmute
    • [T]:: เบ—เปเบฒเบญเบดเบ”
    • [T]::split_first
    • [T]::เบชเบธเบ”เบ—เป‰เบฒเบ
    • [T]::split_last
  • compiler เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เป„เบ›เปƒเบŠเป‰ LLVM เบฎเบธเปˆเบ™ 13.
  • เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก aarch64-apple-ios-sim เปเบฅเบฐเบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบกเบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก powerpc-unknown-freebsd เปเบฅเบฐ riscv32imc-esp-espidf. เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™, เปเบ•เปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบเบฒเบ™เป€เบœเบตเบเปเบœเปˆเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™, เบซเบผเบทเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป„เบ”เป‰.

เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒ Rust เปเบกเปˆเบ™เบชเบธเบกเปƒเบชเปˆเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เปเบฅเบฐเบชเบฐเบซเบ™เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบทเปˆเบญเบšเบฑเบ™เบฅเบธเบ„เบงเบฒเบกเบ‚เบฐเบซเบ™เบฒเบ™เบชเบนเบ‡เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบฝเบเป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบซเบผเบทเป€เบงเบฅเบฒเปเบฅเปˆเบ™ (runtime เบซเบผเบธเบ”เบฅเบปเบ‡เป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เปเบฅเบฐเบเบฒเบ™เบฎเบฑเบเบชเบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™).

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

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

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