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

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

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

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

  • ื ื•ืกืคื” ืืช ื”ื™ื›ื•ืœืช ืœืกืžืŸ ืžื‘ื ื™ื (struct) ื•ืกืคื™ืจื•ืช (enum ืขื ื‘ืœื•ืง Variant) ื‘ืืžืฆืขื•ืช ื”ืชื›ื•ื ื” "#[ืœื_ืžืžืฆื”]", ืื™ื–ื” ื”ื™ื ืžืืคืฉืจืช ื‘ืขืชื™ื“, ื”ื•ืกืฃ ืฉื“ื•ืช ื•ืืคืฉืจื•ื™ื•ืช ื—ื“ืฉื•ืช ืœืžื‘ื ื™ื ื•ืกืคื™ืจื•ืช ืžื•ืฆื”ืจื•ืช. ืœื“ื•ื’ืžื”, ืžืคืชื—ื™ื ืฉืœ ืžื•ื“ื•ืœื™ื ืฉื™ืฉ ืœื”ื ืžื‘ื ื™ื ืขื ืฉื“ื•ืช ืฉื”ื•ื›ืจื–ื• ื‘ืคื•ืžื‘ื™ ื™ื›ื•ืœื™ื ืœื”ืฉืชืžืฉ ื‘-"#[non_exhaustive]" ื›ื“ื™ ืœืกืžืŸ ืžื‘ื ื™ื ืฉืขืฉื•ื™ื™ื ืœื”ืชื•ื•ืกืฃ ืœื”ื ืฉื“ื•ืช ื—ื“ืฉื™ื ื‘ืขืชื™ื“. ืขื“ ื›ื”, ื‘ืžืฆื‘ ื–ื”, ื”ื™ื–ื ื ืืœืฅ ืœื‘ื—ื•ืจ ื‘ื™ืŸ ื”ืฆื”ืจืช ืฉื“ื•ืช ื‘ืื•ืคืŸ ืคืจื˜ื™ ืœื‘ื™ืŸ ืงืฉื™ืจื” ืœืจืฉื™ืžื” ื‘ืœืชื™ ื ื™ืชื ืช ืœืฉื™ื ื•ื™ ืฉืœ ืฉื“ื•ืช. ื”ืชื›ื•ื ื” ื”ื—ื“ืฉื” ืžืกื™ืจื” ืžื’ื‘ืœื” ื–ื• ื•ืžืืคืฉืจืช ืœืš ืœื”ื•ืกื™ืฃ ืฉื“ื•ืช ื—ื“ืฉื™ื ื‘ืขืชื™ื“ ืœืœื ืกื™ื›ื•ืŸ ืœืฉื‘ื™ืจืช ืงื•ื“ ื—ื™ืฆื•ื ื™ ืฉื”ื•ืจื›ื‘ ื‘ืขื‘ืจ. ื‘ื—ื‘ื™ืœื•ืช ืืจื’ื–, ื‘ืขืช ื”ืชืืžืช ืืคืฉืจื•ื™ื•ืช ื‘ืกืขื™ืฃ "ื”ืชืืžื”", ื ื“ืจืฉืช ื”ื’ื“ืจื” ืžืคื•ืจืฉืช ืฉืœ ื”ืžืกื›ื” "_ => {...}", ื”ืžื›ืกื” ืฉื“ื•ืช ืขืชื™ื“ื™ื™ื ืืคืฉืจื™ื™ื, ืื—ืจืช ืชื•ืฆื’ ืฉื’ื™ืื” ื‘ืขืช ื”ื•ืกืคืช ืฉื“ื•ืช ื—ื“ืฉื™ื.
  • ื ื•ืกืฃ ื”ื™ื›ื•ืœืช ืœืงืจื•ื ืœืžืืงืจื• ื”ืคืจื•ืฆื“ื•ืจืœื™ mac!() ื‘ื”ืงืฉืจ ื˜ื™ืคื•ืกื™. ืœื“ื•ื’ืžื”, ื›ืขืช ืชื•ื›ืœ ืœื›ืชื•ื‘ "ืกื•ื’ Foo = expand_to_type!(bar);" ืื "expand_to_type" ื”ื•ื ืžืืงืจื• ืคืจื•ืฆื“ื•ืจืœื™.
  • ื‘ืœื•ืงื™ื "ื—ื™ืฆื•ื ื™ื™ื { ... }". ื”ื•ืกื™ืฃ ื”ื™ื›ื•ืœืช ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื•ืช ืžืืงืจื• ืคืจื•ืฆื“ื•ืจืœื™ื•ืช ื•ืชื›ื•ื ื•ืช, ื›ื•ืœืœ ืคืงื•ื“ื•ืช ืžืืงืจื• "bang!()", ืœืžืฉืœ:

    ื›ืœืœื™_ืžืืงืจื•! make_item { ($name:ident) => { fn $name(); } }

    ื—ื™ืฆื•ื ื™ {
    make_item!(alpha);
    make_item!(ื‘ื˜ื);
    }

    ื—ื™ืฆื•ื ื™ "C" {
    #[ืžืืงืจื•_ื–ื”ื•ืช_ืฉืœื™] fn foo();
    }

  • ื‘ืคืงื•ื“ื•ืช ืžืืงืจื• ืžื•ื˜ืžืข ื”ื™ื›ื•ืœืช ืœื™ืฆื•ืจ ืืœืžื ื˜ื™ื ืฉืœ "macro_rules!". ื™ืฆื™ืจืช "acro_rules!" ืืคืฉืจื™ ื”ืŸ ื‘ืคืงื•ื“ื•ืช ืžืืงืจื• ื“ืžื•ื™ื•ืช ืคื•ื ืงืฆื™ื•ืช ("mac!()") ื•ื”ืŸ ื‘ืคืงื•ื“ื•ืช ืžืืงืจื• ื‘ืฆื•ืจื” ืฉืœ ืชื›ื•ื ื•ืช ("#[mac]").
  • ื‘ืืœืžื ื˜ ื”ืžื™ืคื•ื™ $m:meta ื”ื•ืกื™ืฃ ืชืžื™ื›ื” ื‘ืขืจื›ื™ ืกืคื™ืจืช ืืกื™ืžื•ื ื™ื ืฉืจื™ืจื•ืชื™ื™ื ("[TOKEN_STREAM]", "{TOKEN_STREAM}" ื•-"(TOKEN_STREAM)"), ืœื“ื•ื’ืžื”:

    ื›ืœืœื™_ืžืืงืจื•! accept_meta { ($m:meta) => {} }
    accept_meta!( my::path );
    accept_meta!( my::path = "lit" );
    accept_meta!( my::path ( abc ) );
    accept_meta!( my::path [ abc ] );
    accept_meta!( my::path { abc } );

  • ื‘ืžืฆื‘ Rust 2015, ืคืœื˜ ืฉื’ื™ืื” ืžื•ืคืขืœ ืขื‘ื•ืจ ื‘ืขื™ื•ืช ืฉื–ื•ื”ื• ื‘ืขืช ื‘ื“ื™ืงืช ื”ืฉืืœืช ืžืฉืชื ื™ื (ื‘ื•ื“ืง ื”ื”ืฉืืœื”) ื‘ืืžืฆืขื•ืช ื˜ื›ื ื™ืงืช ื”-NLL (Non-Lexical Lifetimes). ื‘ืขื‘ืจ, ืื–ื”ืจื•ืช ื”ื•ื—ืœืคื• ื‘ืฉื’ื™ืื•ืช ื‘ืขืช ื”ืคืขืœื” ื‘ืžืฆื‘ Rust 2018.
    ืœืื—ืจ ืฉื”ืฉื™ื ื•ื™ ื”ื•ืจื—ื‘ ืœืžืฆื‘ Rust 2015, ืžืคืชื—ื™ื ื”ืฆืœื™ื—ื• ืกื•ืฃ ืกื•ืฃ ะั‘ ยฑ ยฑ ยฑ ะ ะะะะะะะะ ืžื‘ื“ื™ืงืช ื”ื”ืฉืืœื” ื”ื™ืฉื ื”.

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

  • ื”ืชื›ื•ื ื” "const", ื”ืงื•ื‘ืขืช ืืช ื”ืืคืฉืจื•ืช ืœื”ืฉืชืžืฉ ื‘ื” ื‘ื›ืœ ื”ืงืฉืจ ื‘ืžืงื•ื ื‘ืงื‘ื•ืขื™ื, ืžืฉืžืฉืช ืขื‘ื•ืจ ื”ืคื•ื ืงืฆื™ื” is_power_of_two (ืขื‘ื•ืจ ืžืกืคืจื™ื ืฉืœืžื™ื ืœืœื ืกื™ืžืŸ).
  • ื—ืœืง ื—ื“ืฉ ืฉืœ ื”-API ื”ื•ืขื‘ืจ ืœืงื˜ื’ื•ืจื™ื” ื”ื™ืฆื™ื‘ื”, ื›ื•ืœืœ ื”ืžืืงืจื• todo!() ื•ื”-slice::repeat, mem::take, BTreeMap::get_key_value, HashMap::get_key_value, ื”ืฉื™ื˜ื•ืช ื”ืชื™ื™ืฆื‘ื•.
    Option::as_deref, Option::as_deref_mut, Option::flatten, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_ne_bytes, {f32} f64}::from_be_bytes, {f32,f64}::from_le_bytes, ื•-{f32,f64}::from_ne_bytes.

  • ื‘ืžื˜ืขืŸ ืžื ื”ืœ ื”ื—ื‘ื™ืœื•ืช
    ืžื•ื˜ืžืข ืื–ื”ืจื•ืช ืžื”ื“ืจ ืžื˜ืžื•ืŸ ื‘ื“ื™ืกืง. ืœืคืงื•ื“ื” "ืžื˜ื-ื ืชื•ื ื™ื ืฉืœ ืžื˜ืขืŸ" ื ื•ืกืคื” ื”ืืคืฉืจื•ืช "ืžื˜ื-ื ืชื•ื ื™ื ืฉืœ ืžื˜ืขืŸ".--ืคื™ืœื˜ืจ-ืคืœื˜ืคื•ืจืžื”" ื›ื“ื™ ืœื”ืฆื™ื’ ืจืง ื—ื‘ื™ืœื•ืช ื”ืžื—ื•ื‘ืจื•ืช ืœืคืœื˜ืคื•ืจืžืช ื”ื™ืขื“ ืฉืฆื•ื™ื ื” ื‘ืขืžื•ื“ืช ืคืชืจื•ืŸ ื”ืชืœื•ืช. ื ื•ืกืคื” ืืคืฉืจื•ืช ืชืฆื•ืจืช http.ssl-version ื›ื“ื™ ืœื”ื’ื“ื™ืจ ื’ืจืกืื•ืช TLS ื—ื•ืงื™ื•ืช.
    ื ื•ืกืคื” ื”ืืคืฉืจื•ืช ืœืคืจืกื ืืช ื”ืงื˜ืข "ืชืœื•ืช ื‘ืžืคืชื—ื™ื" ืžื‘ืœื™ ืœืฆื™ื™ืŸ ืืช ืžืคืชื— "ื’ืจืกื”".

  • ืžื”ื“ืจ rustc ืžืกืคืง ืชืžื™ื›ื” ื‘ืจืžื” ืฉืœื™ืฉื™ืช ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžื•ืช ื™ืขื“ thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 ื•-mips64el-unknown-linux-muslabi64. ื”ืจืžื” ื”ืฉืœื™ืฉื™ืช ื›ื•ืœืœืช ืชืžื™ื›ื” ื‘ืกื™ืกื™ืช, ืืš ืœืœื ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื•ืคืจืกื•ื ืฉืœ ืžื‘ื ื™ื ืจืฉืžื™ื™ื.

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

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