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

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

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

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

  • ื ื•ืกืฃ ืžืฆื‘ ืงื•ืžืคื™ืœืฆื™ื” ื‘ืฆื™ื ื•ืจ (pipelined), ืฉื‘ื• ื‘ื ื™ื™ืช ื—ื‘ื™ืœืช ืืจื’ื– ืชืœื•ื™ื” ืžืชื—ื™ืœื” ื‘ืจื’ืข ืฉืžื˜ื-ื ืชื•ื ื™ ื”ืชืœื•ืช ื”ื•ืคื›ื™ื ืœื–ืžื™ื ื™ื, ืžื‘ืœื™ ืœื—ื›ื•ืช ืœื”ืฉืœืžืช ื”ืงื•ืžืคื™ืœืฆื™ื” ืฉืœื•. ื‘ืขืช ืงื•ืžืคื™ืœืฆื™ื” ืฉืœ ื—ื‘ื™ืœื”, ืื™ืŸ ืฆื•ืจืš ืœื”ืจื›ื™ื‘ ืืช ื”ืชืœื•ืช ื‘ืžืœื•ืื, ืืœื ืจืง ืœื”ื’ื“ื™ืจ ืืช ื”ืžื˜ื-ื ืชื•ื ื™ื, ื”ื›ื•ืœืœื™ื ืจืฉื™ืžื•ืช ืฉืœ ืกื•ื’ื™ื, ืชืœื•ืช ื•ืืœืžื ื˜ื™ื ืžื™ื•ืฆืื™ื. ืžื˜ื ื ืชื•ื ื™ื ื–ืžื™ื ื™ื ื‘ืฉืœื‘ ืžื•ืงื“ื ื‘ืชื”ืœื™ืš ื”ืงื•ืžืคื™ืœืฆื™ื”, ื›ืš ืฉื ื™ืชืŸ ื›ืขืช ืœื”ืจื›ื™ื‘ ื—ื‘ื™ืœื•ืช ืžืงื•ืฉืจื•ืช ื”ืจื‘ื” ื™ื•ืชืจ ืžื•ืงื“ื. ื‘ืขืช ื‘ื ื™ื™ืช ื—ื‘ื™ืœื•ืช ื‘ื•ื“ื“ื•ืช, ื”ืžืฆื‘ ื”ืžื•ืฆืข ืื™ื ื• ืžืฉืคื™ืข ืขืœ ื”ื‘ื™ืฆื•ืขื™ื, ืืš ืื ื”-build ืžื›ืกื” ื—ื‘ื™ืœื•ืช ืขื ืชืœื•ืช ืžืกื•ืขืคืช, ื ื™ืชืŸ ืœื”ืคื—ื™ืช ืืช ื–ืžืŸ ื”ื‘ื ื™ื™ื” ื”ื›ื•ืœืœ ื‘-10-20%;
  • ืžื‘ื˜ื™ื— ื–ื™ื”ื•ื™ ืฉืœ ืฉื™ืžื•ืฉ ืœื ื ื›ื•ืŸ ื‘ืคื•ื ืงืฆื™ื•ืช std::mem::ืœื ืืชื—ื•ืœ ะธ std::mem::ืืคืก. ืœื“ื•ื’ืžื”, std::mem::uninitialized ื ื•ื— ืœื™ืฆื™ืจื” ืžื”ื™ืจื” ืฉืœ ืžืขืจื›ื™ื, ืืš ื”ื•ื ืžื˜ืขื” ืืช ื”ืžื”ื“ืจ ื›ื™ ื ืจืื” ืฉื”ื•ื ืžืื•ืชื—ืœ, ืืš ื‘ืคื•ืขืœ ื”ืขืจืš ื ื•ืชืจ ืœื ืžืื•ืชื—ืœ. ื”ืคื•ื ืงืฆื™ื” mem::uninitialized ื›ื‘ืจ ืžืกื•ืžื ืช ื›ืžื•ืฆืื” ื•ืžื•ืžืœืฅ ืœื”ืฉืชืžืฉ ื‘ืกื•ื’ ื‘ื™ื ื™ื™ื ื‘ืžืงื•ื ื–ืืช ืื•ืœื™ ื™ื—ื™ื“ื”. ืœื’ื‘ื™ mem::zeroed, ืคื•ื ืงืฆื™ื” ื–ื• ืขืœื•ืœื” ืœื’ืจื•ื ืœื‘ืขื™ื•ืช ืขื ื˜ื™ืคื•ืกื™ื ืฉืื™ื ื ื™ื›ื•ืœื™ื ืœืงื‘ืœ ืขืจื›ื™ ืืคืก.

    ื›ื“ื™ ืœืกื™ื™ืข ื‘ื–ื™ื”ื•ื™ ื”ืชื ื”ื’ื•ืช ืœื ืžื•ื’ื“ืจืช, ื”ืžื”ื“ื•ืจื” ื”ื—ื“ืฉื” ืžื•ืกื™ืคื” ื‘ื“ื™ืงืช ืžื•ืš ืœืžื”ื“ืจ ืฉืžื–ื”ื” ื›ืžื” ื‘ืขื™ื•ืช ืขื mem::uninitialized ืื• mem::zeroed. ืœื“ื•ื’ืžื”, ื›ืขืช ืืชื” ืžืงื‘ืœ ืฉื’ื™ืื” ื‘ืขืช ื ื™ืกื™ื•ืŸ ืœื”ืฉืชืžืฉ ื‘-mem::uninitialized ืื• ื‘-mem::zeroed ืขื ืกื•ื’ื™ &T ื•-Boxโ€นTโ€บ, ื”ืžื™ื™ืฆื’ื™ื ืื•ื‘ื™ื™ืงื˜ื™ ืžืฆื‘ื™ืข ืฉืื™ื ื ื™ื›ื•ืœื™ื ืœืงื‘ืœ ืขืจื›ื™ null;

  • ื”ืชื›ื•ื ื” "#[ื”ื•ืฆื ืžืฉื™ืžื•ืฉ]" ื”ื•ืจื—ื‘ื” ื›ื“ื™ ืœืืคืฉืจ ืœืกืžืŸ ื—ื‘ื™ืœื•ืช ืืจื’ื– ื›ืžื™ื•ืฉื ื•ืช ื•ืœืชื–ืžื•ืŸ ืœืžื—ื™ืงื” ืขืชื™ื“ื™ืช. ื”ื—ืœ ืž-Rust 1.38, ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืชื›ื•ื ื” ื–ื• ื’ื ืขื‘ื•ืจ ืคืงื•ื“ื•ืช ืžืืงืจื•;
  • ื ื•ืกืคื” ืืช ื”ื™ื›ื•ืœืช ืœื”ืฉืชืžืฉ ื‘ืชื›ื•ื ื” "#[ืžืงืฆื”_ื’ืœื•ื‘ืœื™]" ื‘ืชืช-ืžื•ื“ื•ืœื™ื;
  • ื ื•ืกืคื” ืคื•ื ืงืฆื™ื” std::any::type_name, ื”ืžืืคืฉืจ ืœืš ืœื‘ืจืจ ืืช ืฉื ื”ืกื•ื’, ืฉื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉื™ืžื•ืฉื™ ืœืžื˜ืจื•ืช ื ื™ืคื•ื™ ื‘ืื’ื™ื. ืœื“ื•ื’ืžื”, ื‘ืžื”ืœืš ื”ืคืขืœืช ื”ืชื•ื›ื ื™ืช ืชื•ื›ืœ ืœื‘ืจืจ ืœืื™ื–ื” ืกื•ื’ ื ืงืจืื” ื”ืคื•ื ืงืฆื™ื”:

    fn gen_valueโ€นT: ื‘ืจื™ืจืช ืžื—ื“ืœ>() -โ€บ T {
    println!("ืืชื—ื•ืœ ืžื•ืคืข ืฉืœ {}", std::any::type_name::โ€นTโ€บ());
    ื‘ืจื™ืจืช ืžื—ื“ืœ::default()
    }

    fn main() {
    let _: i32 = gen_value(); # "i32" ื™ื•ื“ืคืก
    let _: String = gen_value(); # ื™ื“ืคื™ืก "alloc::string::String"
    }

  • ืคื•ื ืงืฆื™ื•ืช ืžื•ืจื—ื‘ื•ืช ืฉืœ ื”ืกืคืจื™ื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช:
    • slice::{concat, connect, join} ื™ื›ื•ืœ ื›ืขืช ืœืงื—ืช ืืช ื”ืขืจืš &[T] ื‘ื ื•ืกืฃ ืœ-&T;
    • "*const T" ื•-"*mut T" ืžื™ื™ืฉืžื™ื ื›ืขืช ืกืžืŸ::Unpin;
    • "Arcโ€น[T]โ€บ" ื•-"Rcโ€น[T]โ€บ" ืžื™ื™ืฉืžื™ื ื›ืขืช FromIteratorโ€นTโ€บ;
    • iter::{StepBy, Peekable, Take} ื™ื™ืฉื ื›ืขืช ืืช DoubleEndedIterator.
    • ascii::EscapeDefault ืžื™ื™ืฉืžืช Clone ื•-Display.
  • ื—ืœืง ื—ื“ืฉ ืฉืœ ืžืžืฉืงื™ API ื”ื•ืขื‘ืจ ืœืงื˜ื’ื•ืจื™ื™ืช ื”ื™ืฆื™ื‘ื•ืช, ื›ื•ืœืœ ืฉื™ื˜ื•ืช ืฉื™ื•ืฆื‘ื•
    • โ€น*const Tโ€บ::cast, โ€น*mut Tโ€บ::cast,
    • Duration::as_secs_f{32|64},
    • Duration::div_duration_f{32|64},
    • Duration::div_f{32|64},
    • Duration::from_secs_f{32|64},
    • Duration::mul_f{32|64},
    • ืคืขื•ืœื•ืช ื”ื—ื˜ื™ื‘ื” ืขื ื”ืฉืืจ
      div_euclid ื•-rem_euclid ืขื‘ื•ืจ ื›ืœ ื”ืคืจื™ืžื™ื˜ื™ื‘ื™ื ืฉืœืžื™ื;

  • ื ื•ืกืคื” ืชืžื™ื›ื” ืœืฆื™ื•ืŸ ืืคืฉืจื•ืช "--features" ืžืกืคืจ ืคืขืžื™ื ื›ื“ื™ ืœืืคืฉืจ ืชื›ื•ื ื•ืช ืฉื•ื ื•ืช ื‘ืžื ื”ืœ ื—ื‘ื™ืœื•ืช ื”ืžื˜ืขืŸ;
  • ื”ืžื”ื“ืจ ืžืกืคืง ืฉืœื™ืฉื™ ืจืžื” ืชืžื™ื›ื” ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžื•ืช ื™ืขื“ aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc targets, armv7-unknown-linux -gnueabi, armv7-unknown-linux-musleabi, hexagon-unknown-linux-musl ื•-riscv32i-unknown-none-elf. ื”ืจืžื” ื”ืฉืœื™ืฉื™ืช ื›ื•ืœืœืช ืชืžื™ื›ื” ื‘ืกื™ืกื™ืช, ืืš ืœืœื ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื•ืคืจืกื•ื ืฉืœ ืžื‘ื ื™ื ืจืฉืžื™ื™ื.

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

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