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

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

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

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

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

  • ืืคืฉืจ ืœื”ื’ื“ื™ืจ ืงื•ื“ื™ ื”ื—ื–ืจื” ืžืฉืœืš ืžื”ืคื•ื ืงืฆื™ื” ื”ืจืืฉื™ืช. ื‘ืžืงื•ืจ, ื”ืคื•ื ืงืฆื™ื” ื”ืจืืฉื™ืช ืฉืœ Rust ื™ื›ืœื” ืœื”ื—ื–ื™ืจ ืจืง ืกื•ื’ "()" (ื™ื—ื™ื“ื”), ืžื” ืฉืชืžื™ื“ ื”ืฆื‘ื™ืข ืขืœ ืกื˜ื˜ื•ืก ื™ืฆื™ืื” ืžื•ืฆืœื—, ืืœื ืื ื”ืžืคืชื— ืงืจื ื‘ืžืคื•ืจืฉ ืœืคื•ื ืงืฆื™ื” "process::exit(code)". ื‘-Rust 1.26, ื‘ืืžืฆืขื•ืช ืชื›ื•ื ืช ื”-Termination ื”ืœื ื™ืฆื™ื‘ื” ื‘ืคื•ื ืงืฆื™ื” ื”ืจืืฉื™ืช, ื ื™ืชืŸ ื”ื™ื” ืœื”ื—ื–ื™ืจ ืืช ื”ืขืจื›ื™ื "Ok" ื•-"Err", ื”ืชื•ืืžื™ื ืœืงื•ื“ื™ EXIT_SUCCESS ื•-EXIT_FAILURE ื‘ืชื•ื›ื ื™ื•ืช C. ื‘-Rust 1.61, ืชื›ื•ื ืช ื”-Termination ื”ืคื›ื” ืœื™ืฆื™ื‘ื”, ื•ืกื•ื’ ExitCode ื ืคืจื“ ื”ื•ืฆืข ืœื™ื™ืฆื’ ืงื•ื“ ื”ื—ื–ืจื” ืกืคืฆื™ืคื™, ืฉืžืคืฉื˜ ืกื•ื’ื™ ื”ื—ื–ืจื” ืกืคืฆื™ืคื™ื™ื ืœืคืœื˜ืคื•ืจืžื” ืขืœ ื™ื“ื™ ืžืชืŸ ืฉื ื™ ืงื‘ื•ืขื™ื ืžื•ื’ื“ืจื™ื ืžืจืืฉ SUCCESS ื•-FAILURE, ื•ื’ื ืฉื™ื˜ืช From ื›ื“ื™ ืœื”ื—ื–ื™ืจ ืงื•ื“ ื”ื—ื–ืจื” ืžื•ืชืื ืื™ืฉื™ืช. ื”ืฉืชืžืฉ ื‘-std::process::ExitCode; fn main() -> ExitCode { if !check_foo() { return ExitCode::from(8); } ExitCode::SUCCESS }
  • ื™ื›ื•ืœื•ืช ื ื•ืกืคื•ืช ืฉืœ ืคื•ื ืงืฆื™ื•ืช ืฉื”ื•ื’ื“ืจื• ื‘ืืžืฆืขื•ืช ื”ื‘ื™ื˜ื•ื™ "const fn" ื”ืชื™ื™ืฆื‘ื•, ืฉื ื™ืชืŸ ืœืงืจื•ื ืœื”ืŸ ืœื ืจืง ื›ืคื•ื ืงืฆื™ื•ืช ืจื’ื™ืœื•ืช, ืืœื ื’ื ืœื”ืฉืชืžืฉ ื‘ื”ืŸ ื‘ื›ืœ ื”ืงืฉืจ ื‘ืžืงื•ื ื‘ืงื‘ื•ืขื™ื. ืคื•ื ืงืฆื™ื•ืช ืืœื• ืžื—ื•ืฉื‘ื•ืช ื‘ื–ืžืŸ ืงื•ืžืคื™ืœืฆื™ื”, ืœื ื‘ื–ืžืŸ ืจื™ืฆื”, ื•ืœื›ืŸ ื”ืŸ ื›ืคื•ืคื•ืช ืœื”ื’ื‘ืœื•ืช ืžืกื•ื™ืžื•ืช, ื›ืžื• ื”ื™ื›ื•ืœืช ืœืงืจื•ื ืจืง ืžืงื‘ื•ืขื™ื. ื‘ื’ืจืกื” ื”ื—ื“ืฉื”, ืคืขื•ืœื•ืช ื‘ืกื™ืกื™ื•ืช ืขื ืžืฆื‘ื™ืขื™ ืคื•ื ืงืฆื™ื•ืช ืžื•ืชืจื•ืช ื‘ืชื•ืš ืคื•ื ืงืฆื™ื•ืช const (ื™ืฆื™ืจืช, ื”ืขื‘ืจืช ื•ื”ื˜ืœืช ืžืฆื‘ื™ืขื™ื ืžื•ืชืจืช, ืืš ืœื ืงืจื™ืื” ืœืคื•ื ืงืฆื™ื” ื‘ืืžืฆืขื•ืช ืžืฆื‘ื™ืข); ื’ื‘ื•ืœื•ืช ืชื›ื•ื ื” ืขื‘ื•ืจ ืคืจืžื˜ืจื™ื ื’ื ืจื™ื™ื ืฉืœ ืคื•ื ืงืฆื™ื•ืช const ื›ื’ื•ืŸ T: Copy; ืชื›ื•ื ื•ืช ื”ื ื™ืชื ื•ืช ืœืฉื™ื’ื•ืจ ื“ื™ื ืžื™ (dyn Trait); ืกื•ื’ื™ ืชื›ื•ื ื” impl ืขื‘ื•ืจ ืืจื’ื•ืžื ื˜ื™ื ืฉืœ ืคื•ื ืงืฆื™ื•ืช ื•ืขืจื›ื™ ื”ื—ื–ืจื”.
  • ื”ื–ืจื ืžื˜ืคืœ ื‘-Stdin, Stdout ื•-Stderr ื‘-std::io ื™ืฉ ื›ืขืช ื—ื™ื™ื ืกื˜ื˜ื™ื™ื ("ืกื˜ื˜ื™") ื›ืฉื”ื•ื ื ืขื•ืœ, ืžื” ืฉืžืืคืฉืจ ืœื‘ื ื•ืช ื›ืžื• "let out = std::io::stdout().lock();" ืขื ืงื‘ืœืช ื™ื“ื™ืช ื•ื”ื’ื“ืจืช ืžื ืขื•ืœ ื‘ื”ื‘ืขื” ืื—ืช.
  • ื—ืœืง ื—ื“ืฉ ืฉืœ ื”-API ื”ื•ืขื‘ืจ ืœืงื˜ื’ื•ืจื™ื” ืฉืœ ื™ืฆื™ื‘, ื›ื•ืœืœ ื”ืฉื™ื˜ื•ืช ื•ื”ื™ื™ืฉื•ื ืฉืœ ืชื›ื•ื ื•ืช ื”ืชื™ื™ืฆื‘ื•:
    • Pin::static_mut
    • Pin::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • ื›ืชื•ื‘ ืขื‘ื•ืจ ื”ืกืžืŸ<[u8; N]>
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std::proces::ืกื™ื•ื
    • std::thread::JoinHandle::ืกืชื™ื™ื
  • ื”ืชื›ื•ื ื” "const", ื”ืงื•ื‘ืขืช ืืช ื”ืืคืฉืจื•ืช ืœื”ืฉืชืžืฉ ื‘ื” ื‘ื›ืœ ื”ืงืฉืจ ื‘ืžืงื•ื ื‘ืงื‘ื•ืขื™ื, ืžืฉืžืฉืช ื‘ืคื•ื ืงืฆื™ื•ืช:
    • <*const T>::offset ื•<*mut T>::offset
    • <*const T>::wrapping_offset ื•-<*mut T>::wrapping_offset
    • <*const T>::add ื•<*mut T>::add
    • <*const T>::sub ื•-<*mut T>::sub
    • <*const T>::wrapping_add ื•-<*mut T>::wrapping_add
    • <*const T>::wrapping_sub ื•-<*mut T>::wrapping_sub
    • <[T]>::as_mut_ptr
    • <[T]>::as_ptr_range
    • <[T]>::as_mut_ptr_range

ื‘ื ื•ืกืฃ, ื ื™ืชืŸ ืœืฉื™ื ืœื‘ ืœืžืืžืจ "Rust: A Critical Retrospective" ืขื ืกื™ื›ื•ื ื”ืชืจืฉืžื•ื™ื•ืช ืฉืœ ืฉืคืช Rust ืœืื—ืจ ื›ืชื™ื‘ืช 100 ืืœืฃ ืฉื•ืจื•ืช ืงื•ื“ ื‘ื” ื‘ืžื”ืœืš ืคื™ืชื•ื— ืžืขืจื›ืช ื”ื”ืคืขืœื” Xous microkernel ื”ืžืฉืžืฉืช ื‘ืงื•ืฉื—ื”. ื”ื—ืกืจื•ื ื•ืช ื›ื•ืœืœื™ื ืชื—ื‘ื™ืจ ืงืฉื” ืœื”ื‘ื ื”, ื—ื•ืกืจ ืฉืœืžื•ืช ื•ืคื™ืชื•ื— ืžืชืžืฉืš ืฉืœ ื”ืฉืคื”, ื—ื•ืกืจ ื‘ื‘ื ื™ื™ื” ืฉื ื™ืชื ืช ืœื—ื–ืจื”, ื‘ืขื™ื•ืช ืื•ืคื™ื™ื ื™ื•ืช ื‘ืืžื•ืŸ ืชืœื•ืช ื‘-Crates.io ื•ื”ืฆื•ืจืš ืœืฉืžื•ืจ ืขืœ ื“ื™ืกืฆื™ืคืœื™ื ื” ืžืกื•ื™ืžืช ืœื›ืชื™ื‘ืช ืงื•ื“ ืžืื•ื‘ื˜ื—. ืชื›ื•ื ื•ืช ืฉืขืœื• ืขืœ ื”ืฆื™ืคื™ื•ืช ื›ื•ืœืœื•ืช ื›ืœื™ื ืœืฉื—ื–ื•ืจ ืงื•ื“ ื•ืขื™ื‘ื•ื“ ืžื—ื“ืฉ ืฉืœ "ืคืจื™ืฆื•ืช" ืฉื ื•ืกืคื• ื‘ืžื”ืœืš ืื‘ ื˜ื™ืคื•ืก ืžื”ื™ืจ.

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

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