ืฉื—ืจื•ืจ ืฉืคืช ืชื›ื ื•ืช Rust 1.76

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

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

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

ื—ื™ื“ื•ืฉื™ื ืขื™ืงืจื™ื™ื:

  • ืœืชื™ืขื•ื“ ื ื•ืกืฃ ืกืขื™ืฃ ื ืคืจื“ ื”ืžืชืืจ ืืช ื”ืชืื™ืžื•ืช ืฉืœ ืกื•ื’ื™ ืืจื’ื•ืžื ื˜ื™ื ืฉื•ื ื™ื ื•ืกื•ื’ื™ ื”ื—ื–ืจืช ืคื•ื ืงืฆื™ื•ืช ื‘ืจืžืช ABI. ื‘ื”ืฉื•ื•ืื” ืœื’ืจืกืื•ืช ืงื•ื“ืžื•ืช, ืชืื™ืžื•ืช ืžื•ื‘ื˜ื—ืช ื‘ืจืžืช ABI ืฉืœ ื”ืกื•ื’ื™ื "char" ื•-"u32", ื‘ืขืœื™ ื’ื•ื“ืœ ื•ื™ื™ืฉื•ืจ ื–ื”ื™ื.
  • ื‘ื ื•ืกืฃ ืœืงืจื™ืืช "any::type_name::" ื”ื–ืžื™ื ื” ื‘ืขื‘ืจ ()", ื”ืžื—ื–ื™ืจื” ืชื™ืื•ืจ ืžื—ืจื•ื–ืช ืขื‘ื•ืจ ื”ืกื•ื’ ืฉืฆื•ื™ืŸ ื‘ืคืจืžื˜ืจ "T", ื ื•ืกืคื” ื”ืคื•ื ืงืฆื™ื” "type_name_of_val(&T)", ื”ืžืืคืฉืจืช ืœืš ืœืงื‘ืœ ืžื™ื“ืข ืขืœ ืกื•ื’ ื”ืžื‘ื•ืกืก ืขืœ ื›ืœ ื”ืคื ื™ื” ืœืœื ืฉื. fn get_iter() -> impl Iterator { [32, 1, 2].into_iter() } fn main() { let iter = get_iter(); let iter_name = std::any::type_name_of_val(&iter); let sum: i3 = iter.sum(); println!("ื”ืกื›ื•ื ืฉืœ `{iter_name}` ื”ื•ื {sum}."); } ื”ืคืœื˜ ื”ื•ื: ื”ืกื›ื•ื ืฉืœ `core::array::iter::IntoIter `ื”ื•ื 32.
  • ื—ืœืง ื—ื“ืฉ ืฉืœ ื”-API ื”ื•ืขื‘ืจ ืœืงื˜ื’ื•ืจื™ื” ืฉืœ ื™ืฆื™ื‘, ื›ื•ืœืœ ื”ืฉื™ื˜ื•ืช ื•ื”ื™ื™ืฉื•ื ืฉืœ ืชื›ื•ื ื•ืช ื”ืชื™ื™ืฆื‘ื•:
    • Arc::unwrap_or_clone
    • Rc::unwrap_or_clone
    • ืชื•ืฆืื”::ื‘ื“ื•ืง
    • ืชื•ืฆืื”::inspect_err
    • ืืคืฉืจื•ืช::ื‘ื“ื•ืง
    • type_name_of_val
    • std::hash::{DefaultHasher, RandomState}
    • ptr::{from_ref, from_mut}
    • ptr::addr_eq
  • ืจืžืช ื”ืชืžื™ื›ื” ื”ืฉืœื™ืฉื™ืช ื™ื•ืฉืžื” ืขื‘ื•ืจ ื”ืคืœื˜ืคื•ืจืžื•ืช {x86_64,i686}-win7-windows-msvc, aarch64-apple-watchos, arm64e-apple-ios ื•-arm64e-apple-darwin. ื”ืจืžื” ื”ืฉืœื™ืฉื™ืช ื›ื•ืœืœืช ืชืžื™ื›ื” ื‘ืกื™ืกื™ืช, ืืš ืœืœื ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช, ืคืจืกื•ื ื‘ื•ื ื™ื ืจืฉืžื™ื™ื ืื• ื‘ื“ื™ืงื” ืื ื ื™ืชืŸ ืœื‘ื ื•ืช ืืช ื”ืงื•ื“.

ื‘ื ื•ืกืฃ, ืื ื• ื™ื›ื•ืœื™ื ืœืฆื™ื™ืŸ ืืช ื”ื”ื“ื’ืžื” ืฉืœ ืžืชื–ืžืŸ ื”ืžืฉื™ืžื•ืช ื”ื ื™ืกื™ื•ื ื™ scx_rustland, ืฉื ื›ืชื‘ ื‘ืฉืคืช Rust ื•ืžื‘ื•ืฆืข ื‘ืžืจื—ื‘ ื”ืžืฉืชืžืฉ (ื”ื”ืขื‘ืจื” ืฉืœ ืœื•ื’ื™ืงื” ืฉืœ ืชื–ืžื•ืŸ ืžืฉื™ืžื•ืช ืžื”ืงืจื ืœ ืœืžืจื—ื‘ ื”ืžืฉืชืžืฉ ืžื™ื•ืฉืžืช ื‘ืืžืฆืขื•ืช ืขืจื›ืช ื”ื›ืœื™ื sched-ext ื‘ืืžืฆืขื•ืช BPF). ื”ืžืชื–ืžืŸ ืžื•ืชืื ืœื”ื’ื“ืœืช ื”ืขื“ื™ืคื•ืช ืฉืœ ืžืฉื™ืžื•ืช ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ื•ืช ืขืœ ืคื ื™ ืžืฉื™ืžื•ืช ืขืชื™ืจื•ืช ืžืขื‘ื“. ืœื“ื•ื’ืžื”, ื‘ืžื‘ื—ืŸ ืฉืœ ื”ืฉืงืช ืืคืœื™ืงืฆื™ื™ืช ืžืฉื—ืงื™ื ื‘ืžืงื‘ื™ืœ ืœื‘ื ื™ื™ืช ื”ืœื™ื‘ื”, ืžืชื–ืžืŸ scx_rustland ืืคืฉืจ ืœื ื• ืœื”ืฉื™ื’ FPS ื’ื‘ื•ื” ื™ื•ืชืจ ื‘ืžืฉื—ืง ืžืืฉืจ ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืชื–ืžื•ืŸ EEVDF ื”ืกื˜ื ื“ืจื˜ื™.

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

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