ืžืขืœื“ื•ื ื’ ืคื•ืŸ ื“ื™ Rust 1.59 ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทืš ืžื™ื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ื™ื ืกืขืจืฅ

ื“ื™ ืžืขืœื“ื•ื ื’ ืคื•ืŸ ื“ืขืจ ื’ืขื ืขืจืึทืœ-ืฆื•ื•ืขืง ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทืš Rust 1.59, ื’ืขื’ืจื™ื ื“ืขื˜ ื“ื•ืจืš ื“ื™ ืžืึธื–ื™ืœืœืึท ืคึผืจื•ื™ืขืงื˜, ืึธื‘ืขืจ ืื™ืฆื˜ ื“ืขื•ื•ืขืœืึธืคึผืขื“ ืื•ื ื˜ืขืจ ื“ื™ ืึธื•ืกืคึผื™ืกื™ื– ืคื•ืŸ ื“ื™ ืคืจื™ื™ึท ื ืึทืŸ-ื ื•ืฅ ืึธืจื’ืึทื ื™ื–ืึทืฆื™ืข Rust Foundation, ืื™ื– ืืจื•ื™ืก. ื“ื™ ืฉืคึผืจืึทืš ืื™ื– ืคืึธื•ืงื™ืกื˜ ืื•ื™ืฃ ื–ื™ืงืึธืจืŸ ื–ื™ื›ืขืจืงื™ื™ึทื˜ ืื•ืŸ ื’ื™ื˜ ื“ื™ ืžื™ื˜ืœ ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ ื”ื•ื™ืš ืคึผืึทืจืึทืœืขืœื™ื–ืึทื ืื™ืŸ ืึทืจื‘ืขื˜ ื“ื•ืจื›ืคื™ืจื•ื ื’, ืื•ืŸ ื•ื™ืกืžื™ื™ื“ืŸ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ืึท ืžื™ืกื˜ ืงืึทืœืขืงื˜ืขืจ ืื•ืŸ ืจื•ื ื˜ื™ืžืข (ืจื•ื ื˜ื™ืžืข ืื™ื– ืจื™ื“ื•ืกื˜ ืฆื• ื™ืงืขืจื“ื™ืง ื™ื ื™ื˜ื™ืึทืœื™ื–ื™ื™ืฉืึทืŸ ืื•ืŸ ื•ื™ืฉืึทืœื˜ ืคื•ืŸ ื“ื™ ื ืึธืจืžืึทืœ ื‘ื™ื‘ืœื™ืึธื˜ืขืง).

ืจืึทืกื˜ ืก ื–ื›ึผืจื•ืŸ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ื˜ืขืงื ื™ืงืก ื‘ืึทืคืจื™ื™ึทืขืŸ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืคื•ืŸ ื˜ื™ื™ึทื˜ืœ ืžืึทื ื™ืคึผื™ืึทืœื™ื™ืฉืึทืŸ ืขืจืจืึธืจืก ืื•ืŸ ื‘ืึทืฉื™ืฆืŸ ืงืขื’ืŸ ืคึผืจืึธื‘ืœืขืžืก ื•ื•ืึธืก ืฉื˜ื™ื™ืขืŸ ืคึฟื•ืŸ ื ื™ื“ืขืจื™ืง-ืžื“ืจื’ื” ื–ื›ึผืจื•ืŸ ืžืึทื ื™ืคึผื™ืึทืœื™ื™ืฉืึทืŸ, ืึทื–ืึท ื•ื•ื™ ื ืึธืš-ืคืจื™ื™ ืึทืงืกืขืก, ื ืึทืœ ื˜ื™ื™ึทื˜ืœ ื“ื™ืคืขืจืึทื ืกื™ื–, ื‘ืึทืคืขืจ ืึธื•ื•ื•ืขืจืจืึทื ื–, ืื•ืŸ ื“ื™ ื•ื•ื™. ืฆื• ืคืึทืจืฉืคึผืจื™ื™ื˜ืŸ ืœื™ื™ื‘ืจืขืจื™ื–, ืขื ืฉื•ืจ ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืื•ืŸ ืคื™ืจืŸ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื–, ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืื™ื– ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ื“ื™ ืงืึทืจื’ืึธ ืคึผืขืงืœ ืคืึทืจื•ื•ืึทืœื˜ืขืจ. ื“ื™ crates.io ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื™ื– ื’ืขืฉื˜ื™ืฆื˜ ืคึฟืึทืจ ื”ืึธืกื˜ื™ื ื’ ืœื™ื™ื‘ืจืขืจื™ื–.

ื–ื™ืงืึธืจืŸ ื–ื™ื›ืขืจืงื™ื™ึทื˜ ืื™ื– ืขื ืคืึธืจืกื˜ ืื™ืŸ ืจื•ืกื˜ ืื™ืŸ ื“ื™ ืงืึทืžืคึผื™ื™ืœื™ื ื’ ืฆื™ื™ื˜ ื“ื•ืจืš ืจืขืคึฟืขืจืขื ืฅ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’, ืึธื‘ื“ื–ืฉืขืงื˜ ืึธื•ื ืขืจืฉื™ืคึผ ื˜ืจืึทืงื™ื ื’, ืึทื‘ื“ื–ืฉืขืงื˜ ืœืขื‘ืŸ (ืกืงืึธืคึผื™ื ื’) ื‘ืึทื˜ืจืึทื›ื˜ื•ื ื’, ืื•ืŸ ื–ื›ึผืจื•ืŸ ืึทืงืกืขืก ืืคืฉืืฆื•ื ื’ ื‘ื™ื™ ืจื•ื ื˜ื™ืžืข. ื–ืฉืึทื•ื•ืขืจ ืื•ื™ืš ืคึผืจืึธื•ื•ื™ื“ืขืก ืฉื•ืฅ ืงืขื’ืŸ ื™ื ื˜ืึทื“ื–ืฉืขืจ ืึธื•ื•ื•ืขืจืคืœืึธื•ื–, ืจื™ืงื•ื•ื™ื™ืขืจื– ืึทื– ื“ื™ ื•ื•ืขืจื™ืึทื‘ืึทืœ ื•ื•ืึทืœื•ืขืก ื–ืขื ืขืŸ ื™ื ื™ื˜ื™ืึทืœื™ื™ื–ื“ ืื™ื™ื“ืขืจ ื ื•ืฆืŸ, ื”ืื˜ ื‘ืขืกืขืจ ื˜ืขื•ืช ื”ืึทื ื“ืœื™ื ื’ ืื™ืŸ ื“ืขืจ ื ืึธืจืžืึทืœ ื‘ื™ื‘ืœื™ืึธื˜ืขืง, ื ื™ืฆื˜ ื“ืขื ื‘ืึทื’ืจื™ืฃ ืคื•ืŸ ื™ืžืคึผื™ื•ืึทื˜ืึทื‘ืึทืœ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ ืื•ืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ืื•ืŸ ืึธืคืคืขืจืก ืฉื˜ืึทืจืง ืกื˜ืึทื˜ื™ืง ื˜ื™ื™ืคึผื™ื ื’ ืฆื• ืžื™ื ืึทืžื™ื™ื– ืœืึทื“ื–ืฉื™ืงืึทืœ ืขืจืจืึธืจืก.

ื”ื•ื™ืคึผื˜ ื—ื™ื“ื•ืฉื™ื:

  • ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ื ื•ืฆืŸ ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืฉืคึผืจืึทืš ื™ื ืกืขืจืฅ, ื•ื•ืึธืก ื–ืขื ืขืŸ ืื™ืŸ ืคืึธื“ืขืจื•ื ื’ ืื™ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ื•ื•ืึธืก ื“ืึทืจืคึฟืŸ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืื•ื™ืฃ ืึท ื ื™ื“ืขืจื™ืง ืžื“ืจื’ื” ืึธื“ืขืจ ืงืขื ืขืŸ ืฆื• ื ื•ืฆืŸ ืกืคึผืขืฉืึทืœื™ื™ื–ื“ ืžืึทืฉื™ืŸ ื™ื ืกื˜ืจืึทืงืฉืึทื ื–. ืึทืกืขืžื‘ืœื™ ื™ื ืกืขืจืฅ ื–ืขื ืขืŸ ืžื•ืกื™ืฃ ื ื™ืฆืŸ ืžืึทืงืจืึธืก "ืึทืกื!" ืื•ืŸ "ื’ืœืื‘ืืœืข_ืืกื!" ื ื™ืฆืŸ ืฉื˜ืจื™ืงืœ ืคืึธืจืžืึทื˜ื˜ื™ื ื’ ืกื™ื ื˜ืึทืงืก ืคึฟืึทืจ ื ืึทืžื™ื ื’ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ืขื ืœืขืš ืฆื• ืึทื– ื’ืขื ื™ืฆื˜ ืคึฟืึทืจ ืฉื˜ืจื™ืงืœ ืกืึทื‘ืกื˜ื™ื˜ื•ืฉืึทื ื– ืื™ืŸ ืจื•ืกื˜. ื“ืขืจ ืงืึทืžืคึผื™ื™ืœืขืจ ืฉื˜ื™ืฆื˜ ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืื™ื ืกื˜ืจื•ืงืฆื™ืขืก ืคึฟืึทืจ X86, X86-64, ARM, AArch64 ืื•ืŸ RISC-V ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจื–. ื™ื ืกืขืจืฉืึทืŸ ื‘ื™ื™ึทืฉืคึผื™ืœ: ื ื•ืฆืŸ std::arch::asm; // ืžืขืจืŸ ืจืขื ื˜ื’ืขื  ื“ื•ืจืš 6 ื ื™ืฆืŸ ืฉื™ืคืฅ ืื•ืŸ ืžื•ืกื™ืฃ ืœืึธื–ืŸ ืžื•ื˜ ืจืขื ื˜ื’ืขื : ื•64 = 4; ื•ืžื–ื™ื›ืขืจ {ืึทืกื!("ืžืึธื•ื• {ื˜ืžืคึผ}, {ืจืขื ื˜ื’ืขื }", "ืฉืœ {ื˜ืžืคึผ}, 1", "ืฉืœ {ืจืขื ื˜ื’ืขื }, 2", "ืœื™ื™ื’ {ืจืขื ื˜ื’ืขื }, {ื˜ืžืคึผ}", ืจืขื ื˜ื’ืขื  = ื™ื ืึธื•ื˜ (ืจืขื’ ) ืจืขื ื˜ื’ืขื , ื˜ืžืคึผ = ืื•ื™ืก (ืจืขื’) _, ); } ืึทืกืขืจื˜_ืขืง! (ืจืขื ื˜ื’ืขื , 4 * 6);
  • ืฆื•ื’ืขื’ืขื‘ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ืกื˜ืจื•ืงื˜ื•ืจืขื“ (ืคึผืึทืจืึทืœืขืœ) ืึทืกื™ื™ื ืžืึทื ืฅ, ืื™ืŸ ื•ื•ืึธืก ืขื˜ืœืขื›ืข ื˜ืจื™ื™ืฅ, ืกืœื™ื™ืกื™ื– ืึธื“ืขืจ ืกื˜ืจืึทืงื˜ืฉืขืจื– ื–ืขื ืขืŸ ืกืคึผืขืกื™ืคื™ืขื“ ืื•ื™ืฃ ื“ื™ ืœื™ื ืงืก ื–ื™ื™ึทื˜ ืคื•ืŸ ื“ื™ ืื•ื™ืกื“ืจื•ืง. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ: ืœืึธื–ืŸ (ืึท, ื‘, ื’, ื“, ืข); (ืึท, ื‘) = (ืงืกื ื•ืžืงืก, ืงืกื ื•ืžืงืก); [c, .., ื“, _] = [1, 2, 1, 2, 3]; ืกื˜ืจื•ืงื˜ื•ืจ {e, ..} = ืกื˜ืจื•ืงื˜ื•ืจ {e: 4, f: 5}; assert_eq!([5, 3, 1, 2, 1], [ืึท, ื‘, C, ื“, E]);
  • ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืคืขืœื™ืงื™ื™ึทื˜ ื•ื•ืึทืœื•ืขืก ืคึฟืึทืจ ืงืึธื ืกื˜ ื“ื–ืฉืึทื ืขืจื™ืงืก: struct ArrayStorage {arr: [T; N], } ื™ืžืคึผืœ ArrayStorage {fn new(a: T, b: T) -> ArrayStorage {ArrayStorage {arr: [a, b],}} }
  • ื“ื™ ืงืึทืจื’ืึธ ืคึผืขืงืœ ืคืึทืจื•ื•ืึทืœื˜ืขืจ ื’ื™ื˜ ื•ื•ืึธืจื ื™ื ื’ื– ื•ื•ืขื’ืŸ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ืคืึทืจืงืจื™ืคึผืœื˜ ืกื˜ืจืึทืงื˜ืฉืขืจื– ืื™ืŸ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– ื•ื•ืึธืก ื–ืขื ืขืŸ ืคึผืจืึทืกืขืกื˜ ืจืขื›ื˜ ืฆื• ืขืจืจืึธืจืก ืื™ืŸ ื“ื™ ืงืึทืžืคึผื™ื™ืœืขืจ (ืœืžืฉืœ, ืจืขื›ื˜ ืฆื• ืึท ื˜ืขื•ืช, ืคืขืœื“ืขืจ ืคื•ืŸ ืคึผืึทืงื˜ ืกื˜ืจืึทืงื˜ืฉืขืจื– ื–ืขื ืขืŸ ืขืจืœื•ื™ื‘ื˜ ืฆื• ื–ื™ื™ืŸ ื‘ืึทืจืึธื•ื“ ืื™ืŸ ื–ื™ื›ืขืจ ื‘ืœืึทืงืก). ืึทื–ืึท ืงืึทื ืกื˜ืจืึทืงืฉืึทื ื– ื•ื•ืขื˜ ื ื™ื˜ ืžืขืจ ื–ื™ื™ืŸ ื’ืขืฉื˜ื™ืฆื˜ ืื™ืŸ ืึท ืฆื•ืงื•ื ืคึฟื˜ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ืจื•ืกื˜.
  • ืœืึทืกื˜ ืื•ืŸ ืจืึทืกืง ื”ืึธื‘ืŸ ืึท ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ื˜ืขืงืขืก ืกื˜ืจื™ืคึผื˜ ืคื•ืŸ ื“ื™ื‘ืึทื’ื™ื ื’ ื“ืึทื˜ืŸ (ืคึผืึทืก = "ื“ืขื‘ื•ื’ื™ื ืคืึธ") ืื•ืŸ ืกื™ืžื‘ืึธืœืก (ืคึผืึทืก = "ืกื™ืžื‘ืึทืœื–"), ืึธืŸ ื“ื™ ื ื•ื™ื˜ ืฆื• ืจื•ืคืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ื ื•ืฆืŸ. ื“ื™ ืจื™ื™ื ื™ืงื•ื ื’ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืื™ื– ื™ืžืคึผืœืึทืžืขื ืึทื“ ื“ื•ืจืš ื“ื™ "ืคึผืึทืก" ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ืŸ Cargo.toml: [profile.release] ืกื˜ืจื™ืคึผ = "ื“ืขื‘ื•ื’ื™ื ืคืึธ", "ืกื™ืžื‘ืึทืœื–"
  • ื™ื ืงืจืขืžืขื ื˜ืึทืœ ื–ืึทืžืœื•ื ื’ ืื™ื– ืคืึทืจืงืจื™ืคึผืœื˜ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜. ื“ื™ ืกื™ื‘ื” ืื™ื– ื’ืขื–ืื’ื˜ ืฆื• ื–ื™ื™ืŸ ืึท ืฆื™ื™ึทื˜ื•ื•ื™ื™ึทืœื™ืง ื•ื•ืึธืจืงืึทืจืึธื•ื ื“ ืคึฟืึทืจ ืึท ื–ืฉื•ืง ืื™ืŸ ื“ื™ ืงืึทืžืคึผื™ื™ืœืขืจ ื•ื•ืึธืก ืคื™ืจื˜ ืฆื• ืงืจืึทืฉื™ื– ืื•ืŸ ื“ืขืกื™ืจื™ืึทืœื™ื–ื™ื™ืฉืึทืŸ ืขืจืจืึธืจืก. ื ื–ืฉื•ืง ืคืึทืจืจื™ื›ื˜ืŸ ืื™ื– ืฉื•ื™ืŸ ืฆื•ื’ืขื’ืจื™ื™ื˜ ืื•ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืžืขืœื“ื•ื ื’. ืฆื• ืฆื•ืจื™ืงืงื•ืžืขืŸ ื™ื ืงืจืึทืžืขื ื˜ืึทืœ ื–ืึทืžืœื•ื ื’, ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ื“ื™ ืกื•ื•ื™ื•ื•ืข ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง RUSTC_FORCE_INCREMENTAL=1.
  • ื ื ื™ื™ึทืข ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ API ืื™ื– ืืจื™ื‘ืขืจื’ืขืคืืจืŸ ืฆื• ื“ืขืจ ืงืึทื˜ืขื’ืึธืจื™ืข ืคื•ืŸ โ€‹โ€‹ืกื˜ืึทื‘ื™ืœ, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ื“ื™ ืžืขื˜ื”ืึธื“ืก ืื•ืŸ ื™ืžืคึผืœืึทืžืึทื ืฅ ืคื•ืŸ ื˜ืจื™ื™ืฅ ื–ืขื ืขืŸ ืกื˜ื™ื™ื‘ืึทืœื™ื™ื–ื“:
    • std::ืคืึธื“ืขื::ืึทื•ื•ืึทื™ืœืึทื‘ืœืข_ืคึผืึทืจืึทืœืขืœื™ื–ื
    • ืจืขื–ื•ืœื˜ืึทื˜ :: ืงืึทืคึผื™ื“
    • ืจืขื–ื•ืœื˜ืึทื˜ :: ืงืœืึธื•ื ื“
    • arch::asm!
    • arch::global_asm!
    • ops::ControlFlow::is_break
    • ops::ControlFlow::is_continue
    • ืคึผืจื•ึผื•ื•ื˜ ืคึฟื•ืŸ ืคึฟืึทืจ u8
    • char::TryFromCharError (ืงืœืึธื ืข, ื“ืขื‘ื•ื’, ื•ื•ื™ื™ึทื–, PartialEq, Copy, Eq, Error)
    • ื™ื˜ืขืจ :: ืคืึทืจืฉืœืขืกืœืขืŸ
    • NonZeroU8 :: ืื™ื–_ืžืึทื›ื˜_ืคื•ืŸ_ืฆื•ื•ื™ื™
    • NonZeroU16 :: ืื™ื–_ืžืึทื›ื˜_ืคื•ืŸ_ืฆื•ื•ื™ื™
    • NonZeroU32 :: ืื™ื–_ืžืึทื›ื˜_ืคื•ืŸ_ืฆื•ื•ื™ื™
    • NonZeroU64 :: ืื™ื–_ืžืึทื›ื˜_ืคื•ืŸ_ืฆื•ื•ื™ื™
    • NonZeroU128 :: ืื™ื–_ืžืึทื›ื˜_ืคื•ืŸ_ืฆื•ื•ื™ื™
    • DoubleEndedIterator ืคึฟืึทืจ ื˜ืึธืœืึธื•ืขืจืงืึทืกืข ืกื˜ืจื•ืงื˜ื•ืจ
    • DoubleEndedIterator ืคึฟืึทืจ ื˜ืึธื•ืคึผืคึผืขืจืงืึทืกืข ืกื˜ืจื•ืงื˜ื•ืจ
    • TryFrom ืคึฟืึทืจ [T; ื ]
    • ืึทื ื•ื•ื™ื ื“ ืกืึทืคืข ืคึฟืึทืจ ื“ื™ ืึทืžืึธืœ ืกื˜ืจื•ืงื˜ื•ืจ
    • RefUnwindSafe ืคึฟืึทืจ ืึทืžืึธืœ
    • armv8 ื ืขืึธืŸ ืฉื˜ื™ืฆืŸ ืคืึทื ื’ืงืฉืึทื ื– ื’ืขื‘ื•ื™ื˜ ืื™ืŸ ื“ื™ ืงืึทืžืคึผื™ื™ืœืขืจ ืคึฟืึทืจ aarch64
  • ื“ื™ "ืงืึธื ืกื˜" ืึทื˜ืจื™ื‘ื™ื•ื˜, ื•ื•ืึธืก ื“ื™ื˜ืขืจืžืึทื ื– ื“ื™ ืžืขื’ืœืขื›ืงื™ื™ื˜ ืคื•ืŸ ื ื™ืฆืŸ ืขืก ืื™ืŸ ืงื™ื™ืŸ ืงืึธื ื˜ืขืงืกื˜ ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ืงืึทื ืกื˜ืึทื ืฅ, ืื™ื– ื’ืขื ื™ืฆื˜ ืื™ืŸ ื“ื™ ืคืึทื ื’ืงืฉืึทื ื–:
    • mem::MaybeUninit::as_ptr
    • mem::MaybeUninit::assume_init
    • mem::MaybeUninit::assume_init_ref
    • ffi::CSr::from_bytes_with_nul_unchecked

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’