ืžื”ื“ื•ืจืช ืฉืคืช ื”ืชื›ื ื•ืช Rust 2021 (1.56)

ืคื•ืจืกื ืฉื—ืจื•ืจื• ืฉืœ ืฉืคืช ื”ืชื›ื ื•ืช ื”ืžืขืจื›ืชื™ืช Rust 1.56, ืฉื ื•ืกื“ื” ืขืœ ื™ื“ื™ ืคืจื•ื™ืงื˜ ืžื•ื–ื™ืœื”, ืืš ื›ืขืช ืคื•ืชื—ื” ื‘ื—ืกื•ืช ื”ืขืžื•ืชื” ื”ืขืฆืžืื™ืช Rust Foundation. ื‘ื ื•ืกืฃ ืœืžืกืคืจ ื”ื’ืจืกื” ื”ืจื’ื™ืœ, ื”ืžื”ื“ื•ืจื” ื ืงืจืืช ื’ื Rust 2021 ื•ืžืกืžื ืช ื”ืชื™ื™ืฆื‘ื•ืช ืฉืœ ื”ืฉื™ื ื•ื™ื™ื ืฉื”ื•ืฆืขื• ื‘ืฉืœื•ืฉ ื”ืฉื ื™ื ื”ืื—ืจื•ื ื•ืช. Rust 2021 ื™ืฉืžืฉ ื’ื ื›ื‘ืกื™ืก ืœื”ื’ื‘ืจืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื‘ืฉืœื•ืฉ ื”ืฉื ื™ื ื”ื‘ืื•ืช, ื‘ื“ื•ืžื” ืœืื•ืคืŸ ืฉื‘ื• ืฉื—ืจื•ืจ Rust 2018 ื”ืคืš ืœื‘ืกื™ืก ืœืคื™ืชื•ื— ื”ืฉืคื” ื‘ืฉืœื•ืฉ ื”ืฉื ื™ื ื”ืื—ืจื•ื ื•ืช.

ื›ื“ื™ ืœืฉืžื•ืจ ืขืœ ืชืื™ืžื•ืช, ืžืคืชื—ื™ื ื™ื›ื•ืœื™ื ืœื”ืฉืชืžืฉ ื‘ืชื•ื•ื™ื•ืช "2015", "2018" ื•-"2021" ื‘ืชื•ื›ื ื•ืช ืฉืœื”ื, ืžื” ืฉืžืืคืฉืจ ืœืงืฉืจ ืชื•ื›ื ื™ื•ืช ืœืคืจื•ืกื•ืช ืžืฆื‘ ืฉืคื” ื”ืชื•ืืžื•ืช ืœืžื”ื“ื•ืจื•ืช ืฉื ื‘ื—ืจื• ืฉืœ Rust. ืžื”ื“ื•ืจื•ืช ื”ื•ืฆื’ื• ื›ื“ื™ ืœื”ืคืจื™ื“ ื‘ื™ืŸ ืฉื™ื ื•ื™ื™ื ื‘ืœืชื™ ืชื•ืืžื™ื ื•ืžื•ื’ื“ืจื•ืช ื‘ืžื˜ื ื ืชื•ื ื™ื ืฉืœ ื—ื‘ื™ืœื•ืช ืžื˜ืขืŸ ื“ืจืš ื”ืฉื“ื” "ืžื”ื“ื•ืจื”" ื‘ืกืขื™ืฃ "[ื—ื‘ื™ืœื”]". ืœื“ื•ื’ืžื”, ืžื”ื“ื•ืจืช "2018" ื›ื•ืœืœืช ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืฉื”ืชื™ื™ืฆื‘ื” ืžืกื•ืฃ 2018 ื•ืžื›ืกื” ื’ื ืืช ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ื”ื ื•ืกืคื™ื ืฉืื™ื ื ืžืคืจื™ื ืืช ื”ืชืื™ืžื•ืช. ืžื”ื“ื•ืจืช 2021 ื›ื•ืœืœืช ื‘ื ื•ืกืฃ ืชื›ื•ื ื•ืช ืฉื•ื‘ืจื•ืช ื™ื›ื•ืœืช ืคืขื•ืœื” ื”ื“ื“ื™ืช ื”ืžื•ืฆืขื•ืช ื‘ืžื”ื“ื•ืจื” ื”ื ื•ื›ื—ื™ืช ืฉืœ 1.56 ื•ืžืื•ืฉืจืช ืœื™ื™ืฉื•ื ืขืชื™ื“ื™. ื‘ื ื•ืกืฃ ืœืฉืคื” ืขืฆืžื”, ื”ืขื•ืจื›ื™ื ืœื•ืงื—ื™ื ื‘ื—ืฉื‘ื•ืŸ ื’ื ืืช ืžืฆื‘ ื”ื›ืœื™ื ื•ื”ืชื™ืขื•ื“.

ืื™-ื”ืชืืžื•ืช ื”ืขื™ืงืจื™ื•ืช ืฉืชื•ืขื“ื• ื‘-Rust 2021:

  • ืœื›ื™ื“ื” ื ืคืจื“ืช ื‘ืกื’ื™ืจื•ืช - ืกื’ื™ืจื•ืช ื™ื›ื•ืœื•ืช ื›ืขืช ืœืœื›ื•ื“ ืฉืžื•ืช ืฉื“ื•ืช ื‘ื•ื“ื“ื™ื ื‘ืžืงื•ื ื”ืžื–ื”ื” ื›ื•ืœื•. ืœื“ื•ื’ืžื”, "|| ax + 1" ื™ืœื›ื•ื“ ืจืง "ื’ืจื–ืŸ" ื‘ืžืงื•ื "ื".
  • ื”ืชื›ื•ื ื” IntoIterator ืขื‘ื•ืจ ืžืขืจื›ื™ื: array.into_iter() ืžืืคืฉืจืช ืœืš ืœื—ื–ื•ืจ ืขืœ ืจื›ื™ื‘ื™ ืžืขืจืš ืœืคื™ ืขืจื›ื™ื, ื•ืœื ืœืคื™ ื”ืคื ื™ื•ืช.
  • ื”ืขื™ื‘ื•ื“ ืฉืœ ื‘ื™ื˜ื•ื™ื™ "|" ื”ืฉืชื ื” ื‘-macro_rules (ื‘ื•ืœื™ืื ื™ืช OR) ื‘ืชื‘ื ื™ื•ืช - ืžืคืจื˜ ":pat" ื‘ื”ืชืืžื•ืช ืžื›ื‘ื“ ื›ืขืช ืืช "A | ื‘".
  • ืžื ื”ืœ ื—ื‘ื™ืœื•ืช ื”ืžื˜ืขืŸ ื›ื•ืœืœ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืืช ื”ื’ืจืกื” ื”ืฉื ื™ื™ื” ืฉืœ ืคื•ืชืจ ื”ืชื›ื•ื ื•ืช, ืฉืชืžื™ื›ื” ื‘ื” ื”ื•ืคื™ืขื” ื‘- Rust 1.51.
  • ื”ืชื›ื•ื ื•ืช TryFrom, TryInto ื•-FromIterator ื ื•ืกืคื• ืœืžื•ื“ื•ืœ ื”ืกืคืจื™ื™ื” ื”ืกื˜ื ื“ืจื˜ื™.
  • ืคืงื•ื“ื•ืช ื”ืžืืงืจื• ื”ืคืื ื™ืงื”!(..) ื•-assert!(expr, ..) ืžืฉืชืžืฉื•ืช ื›ืขืช ืชืžื™ื“ ื‘-format_args!(..) ื›ื“ื™ ืœืขืฆื‘ ืžื—ืจื•ื–ื•ืช, ื‘ื“ื•ืžื” ืœ-println!().
  • ื”ื‘ื™ื˜ื•ื™ื™ื ident#, identยป..." ื•-ident'...' ืฉืžื•ืจื™ื ื‘ืชื—ื‘ื™ืจ ื”ืฉืคื”.
  • ื”ืขื‘ื™ืจื• ืื–ื”ืจื•ืช ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื_ืจืง_ืชื›ื•ื ื•ืช ื•-ellipsis_inclusive_range_patterns ืœืฉื’ื™ืื•ืช.

ื—ื“ืฉ ื‘ื—ืœื•ื“ื” 1.56:

  • ื‘-Cargo.toml, ื‘ืกืขื™ืฃ "[ื—ื‘ื™ืœื”]", ื ื•ืกืฃ ืฉื“ื” ื’ืจืกืช ื”ื—ืœื•ื“ื”, ืฉื“ืจื›ื• ื ื™ืชืŸ ืœืงื‘ื•ืข ืืช ื”ื’ืจืกื” ื”ืžื™ื ื™ืžืœื™ืช ื”ื ืชืžื›ืช ืฉืœ Rust ืขื‘ื•ืจ ื—ื‘ื™ืœืช ื”ืืจื’ื–. ืื ื”ื’ืจืกื” ื”ื ื•ื›ื—ื™ืช ืœื ืชื•ืืžืช ืืช ื”ืคืจืžื˜ืจ ืฉืฆื•ื™ืŸ, Cargo ืชืคืกื™ืง ืœืขื‘ื•ื“ ืขื ื”ื•ื“ืขืช ืฉื’ื™ืื”.
  • ื‘ืขืช ื”ืชืืžืช ื“ืคื•ืกื™ื ื‘ืืžืฆืขื•ืช ื‘ื™ื˜ื•ื™ื™ "binding @ pattern", ื ื™ืชื ืช ืชืžื™ื›ื” ืœืฆื™ื•ืŸ ื›ืจื™ื›ื•ืช ื ื•ืกืคื•ืช (ืœื“ื•ื’ืžื”, "let matrix @ Matrix { row_len, .. } = get_matrix();").
  • ื—ืœืง ื—ื“ืฉ ืฉืœ ื”-API ื”ื•ืขื‘ืจ ืœืงื˜ื’ื•ืจื™ื” ืฉืœ ื™ืฆื™ื‘, ื›ื•ืœืœ ื”ืฉื™ื˜ื•ืช ื•ื”ื™ื™ืฉื•ื ืฉืœ ืชื›ื•ื ื•ืช ื”ืชื™ื™ืฆื‘ื•:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::shrink_to
    • ืžื—ืจื•ื–ืช::shink_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
  • ื”ืžื”ื“ืจ ื”ื•ืขื‘ืจ ืœืฉื™ืžื•ืฉ ื‘ื’ืจืกื” 13 ืฉืœ LLVM.
  • ืจืžื” ืฉื ื™ื™ื” ืฉืœ ืชืžื™ื›ื” ื™ื•ืฉืžื” ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžืช aarch64-apple-ios-sim ื•ืจืžื” ืฉืœื™ืฉื™ืช ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžื•ืช powerpc-unknown-freebsd ื•-riscv32imc-esp-espidf. ื”ืจืžื” ื”ืฉืœื™ืฉื™ืช ื›ื•ืœืœืช ืชืžื™ื›ื” ื‘ืกื™ืกื™ืช, ืืš ืœืœื ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช, ืคืจืกื•ื ื‘ื•ื ื™ื ืจืฉืžื™ื™ื ืื• ื‘ื“ื™ืงื” ืื ื ื™ืชืŸ ืœื‘ื ื•ืช ืืช ื”ืงื•ื“.

ื ื–ื›ื™ืจ ื›ื™ Rust ืžืชืžืงื“ืช ื‘ื‘ื˜ื™ื—ื•ืช ื–ื™ื›ืจื•ืŸ, ืžืกืคืงืช ื ื™ื”ื•ืœ ื–ื™ื›ืจื•ืŸ ืื•ื˜ื•ืžื˜ื™, ื•ืžืกืคืงืช ืืช ื”ืืžืฆืขื™ื ืœื”ืฉื’ืช ืžืงื‘ื™ืœื™ื•ืช ื’ื‘ื•ื”ื” ื‘ื‘ื™ืฆื•ืข ื”ืขื‘ื•ื“ื” ืœืœื ืฉื™ืžื•ืฉ ื‘ืืกืคืŸ ืืฉืคื” ืื• ื–ืžืŸ ืจื™ืฆื” (ื–ืžืŸ ื”ืจื™ืฆื” ืžืฆื˜ืžืฆื ืœืืชื—ื•ืœ ื•ืชื—ื–ื•ืงื” ื‘ืกื™ืกื™ื™ื ืฉืœ ื”ืกืคืจื™ื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช).

ื ื™ื”ื•ืœ ื”ื–ื™ื›ืจื•ืŸ ื”ืื•ื˜ื•ืžื˜ื™ ืฉืœ Rust ืžื‘ื˜ืœ ืฉื’ื™ืื•ืช ื‘ืขืช ืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ืžืฆื‘ื™ืขื™ื ื•ืžื’ืŸ ืžืคื ื™ ื‘ืขื™ื•ืช ื”ื ื•ื‘ืขื•ืช ืžืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ื–ื™ื›ืจื•ืŸ ื‘ืจืžื” ื ืžื•ื›ื”, ื›ื’ื•ืŸ ื’ื™ืฉื” ืœืื–ื•ืจ ื–ื™ื›ืจื•ืŸ ืœืื—ืจ ืฉื—ืจื•ืจื•, ื”ืคื ื™ื™ืช ืžืฆื‘ื™ืข ืืคืกื™ืช, ื—ืจื™ื’ื•ืช ืžืื’ืจ ื•ื›ื•'. ื›ื“ื™ ืœื”ืคื™ืฅ ืกืคืจื™ื•ืช, ืœื”ื‘ื˜ื™ื— ื”ืจื›ื‘ื” ื•ืœื ื”ืœ ืชืœื•ืช, ื”ืคืจื•ื™ืงื˜ ืžืคืชื— ืืช ืžื ื”ืœ ื”ื—ื‘ื™ืœื•ืช Cargo. ืžืื’ืจ crates.io ื ืชืžืš ืœืื™ืจื•ื— ืกืคืจื™ื•ืช.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”