Rust 1.43 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдкреНрд░рдХрд╛рд╢рди

рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдкреНрд░рдХрд╛рд╢рди рдЧрдВрдЬ 1.43, Mozilla рдкреНрд░рдХрд▓реНрдкрд╛рджреНрд╡рд╛рд░реЗ рд╕реНрдерд╛рдкрд┐рдд. рднрд╛рд╖рд╛ рдореЗрдорд░реА рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ, рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдореЗрдорд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдЖрдгрд┐ рдХрдЪрд░рд╛ рдЧреЛрд│рд╛ рди рдХрд░рддрд╛ рдЙрдЪреНрдЪ рдХрд╛рд░реНрдп рд╕рдорд╛рдВрддрд░рддрд╛ рд╕рд╛рдзреНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд╛рдзрдиреЗ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдЖрдгрд┐ рд░рдирдЯрд╛рдЗрдо.

рд░рд╕реНрдЯрдЪреЗ рдСрдЯреЛрдореЕрдЯрд┐рдХ рдореЗрдорд░реА рдореЕрдиреЗрдЬрдореЗрдВрдЯ рдбреЗрд╡реНрд╣рд▓рдкрд░рд▓рд╛ рдкреЙрдЗрдВрдЯрд░ рдореЕрдирд┐рдкреНрдпреБрд▓реЗрд╢рдирдкрд╛рд╕реВрди рдореБрдХреНрдд рдХрд░рддреЗ рдЖрдгрд┐ рд▓реЛ-рд▓реЗрд╡реНрд╣рд▓ рдореЗрдорд░реА рдореЕрдирд┐рдкреНрдпреБрд▓реЗрд╢рдирдореБрд│реЗ рдЙрджреНрднрд╡рдгрд╛рд░реНтАНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдкрд╛рд╕реВрди рд╕рдВрд░рдХреНрд╖рдг рдХрд░рддреЗ, рдЬрд╕реЗ рдХреА рдЖрдлреНрдЯрд░-рдлреНрд░реА рдореЗрдорд░реА рдНрдХреНрд╕реЗрд╕, рдирд▓ рдкреЙрдЗрдВрдЯрд░ рдбрд┐рд░реЗрдлрд░реЗрдиреНрд╕реЗрд╕, рдмрдлрд░ рдУрд╡реНрд╣рд░рд░рдиреНрд╕ рдЖрдгрд┐ рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛. рдЧреНрд░рдВрдерд╛рд▓рдпрд╛рдВрдЪреЗ рд╡рд┐рддрд░рдг, рдЕрд╕реЗрдВрдмрд▓реА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдкреНрд░рдХрд▓реНрдкрд╛рджреНрд╡рд╛рд░реЗ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреЕрдХреЗрдЬ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдд рдЖрд╣реЗ. рдорд╛рд▓рд╡рд╛рд╣реВ, рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд▓рд╛рдпрдмреНрд░рд░реА рдПрдХрд╛ рдХреНрд▓рд┐рдХрд╡рд░ рдорд┐рд│рд╡рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. рд▓рд╛рдпрдмреНрд░рд░реА рд╣реЛрд╕реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗ crates.io.

рдореБрдЦреНрдп рдирд╡рдХрд▓реНрдкрдирд╛:

  • рдореЕрдХреНрд░реЛ рдШрдЯрдХрд╛рдВрдЪреНрдпрд╛ рддреБрдХрдбреНрдпрд╛рдВрдирд╛ рдЧреБрдг (рд╡рд┐рд╢реЗрд╖рдг), рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА (impl) рдХрд┐рдВрд╡рд╛ рдмрд╛рд╣реНрдп рдмреНрд▓реЙрдХреНрд╕рд╕рд╛рдареА рдХреЛрдбрдордзреНрдпреЗ рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:

    рдореЕрдХреНрд░реЛ_рдирд┐рдпрдо! mac_trait {
    ($i:item) => {
    рд╡реИрд╢рд┐рд╖реНрдЯреНрдп T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    рдкрд┐рдвреАрдХрдбреЗ рдиреЗрдИрд▓:

    рдЧреБрдг T {
    fn foo() {}
    }

  • рдЖрджрд┐рдо, рд╕рдВрджрд░реНрдн рдЖрдгрд┐ рдмрд╛рдпрдирд░реА рдСрдкрд░реЗрд╢рдиреНрд╕рдЪрд╛ рд╕реБрдзрд╛рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рд╢реЛрдз.
    рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЦрд╛рд▓реАрд▓ рдХреЛрдб, рдЬреНрдпрд╛рдиреЗ рдкреВрд░реНрд╡реА рддреНрд░реБрдЯреА рдирд┐рд░реНрдорд╛рдг рдХреЗрд▓реА рд╣реЛрддреА, рдЖрддрд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕реЗрд▓ (рд░рд╕реНрдЯ рдЖрддрд╛ рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рдХреА 0.0 рдЖрдгрд┐ &0.0 рд╣реЗ f32 рдкреНрд░рдХрд╛рд░рдЪреЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ):

    let n: f32 = 0.0 + &0.0;

  • рдХрд╛рд░реНрдЧреЛрдордзреНрдпреЗ рдирд╡реАрди рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ CARGO_BIN_EXE_{name} рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рдЗрдВрдЯрд┐рдЧреНрд░реЗрд╢рди рдЪрд╛рдЪрдгреНрдпрд╛ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреЕрдХреЗрдЬрдЪреНрдпрд╛ тАЬ[[bin]]тАЭ рд╡рд┐рднрд╛рдЧрд╛рдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдПрдХреНрдЭрд┐рдХреНрдпреВрдЯреЗрдмрд▓ рдлрд╛рдЗрд▓рдЪрд╛ рдкреВрд░реНрдг рдорд╛рд░реНрдЧ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.
  • рд╡рд┐рдзрд╛рдирд╛рдВрдирд╛ "#[cfg()]" рд╕рд╛рд░рдЦреНрдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдЕрд╕рд▓реНрдпрд╛рд╕.
  • рд▓рд╛рдпрдмреНрд░рд░реА рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рди рдХрд░рддрд╛ рдереЗрдЯ рдкреВрд░реНрдгрд╛рдВрдХ рдЖрдгрд┐ рдЕрдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░рд╛рдВрд╕рд╛рдареА рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдореНрд╣реА рдкреНрд░рдердо "std::u32 рд╡рд╛рдкрд░рд╛" рдЖрдгрд┐ "std::f32 рд╡рд╛рдкрд░рд╛" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛рд╢рд┐рд╡рд╛рдп u32::MAX рдХрд┐рдВрд╡рд╛ f32::NAN рд▓рдЧреЗрдЪ рд▓рд┐рд╣реВ рд╢рдХрддрд╛.
  • рдирд╡реАрди рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд▓реЗ рдкреНрд░рд╛рдЪреАрди, рдЬреЗ рд░рд╕реНрдЯ рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡реНрд╣ рдкреНрд░рдХрд╛рд░ рдкреБрдиреНрд╣рд╛-рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдореЕрдХреНрд░реЛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рдкреНрд░рдХрд╛рд░ рд▓рдкрд▓реЗрд▓реЗ рдирд╛рд╣реАрдд рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛.
  • рдПрдкреАрдЖрдпрдЪрд╛ рдПрдХ рдирд╡реАрди рднрд╛рдЧ рд╕реНрдерд┐рд░ рд╢реНрд░реЗрдгреАрдордзреНрдпреЗ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рд╕реНрдерд┐рд░реАрдХрд░рдг рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ

    рдПрдХрджрд╛::is_completed,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 рдЖрдгрд┐
    iter::one_with.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛