рд╡рд┐рдХрд╛рд╕ рдЯреЛрд▓реА Rust 1.36 рдкрд░рд┐рдЪрдп рдЧрд░реНрди рдЙрддреНрд╕рд╛рд╣рд┐рдд рдЫ!

Rust 1.36 рдорд╛ рдирдпрд╛рдБ рдХреЗ рдЫ?
рднрд╡рд┐рд╖реНрдпрдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реНрдерд┐рд░, рдирдпрд╛рдБ рдмрд╛рдЯ: рдЖрд╡рдВрдЯрд┐рдд рдХреНрд░реЗрдЯ, MaybeUninit , рд░рд╕реНрдЯ 2015 рдХреЛ рд▓рд╛рдЧрд┐ NLL, HashMap рдХреЛ рдирдпрд╛рдБ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд░ рдХрд╛рд░реНрдЧреЛрдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдЭрдгреНрдбрд╛ рдЕрдлрд▓рд╛рдЗрдиред


рд░ рдЕрдм рдердк рд╡рд┐рд╡рд░рдг рдорд╛:

  • рдЕрдиреНрддрддрдГ Rust 1.36 рдорд╛ рд╕реНрдерд┐рд░ рднрдпреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рднрд╡рд┐рд╖реНрдпред
  • рдХреНрд░реЗрдЯ рдЖрд╡рдВрдЯрдиред
    Rust 1.36 рдХреЛ рд░реВрдкрдорд╛, std рдХреЛ рдЕрдВрд╢рд╣рд░реВ рдЬреБрди рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рд╡рд┐рдирд┐рдпреЛрдЬрдирдХрд░реНрддрд╛рдорд╛ рдирд┐рд░реНрднрд░ рд╣реБрдиреНрдЫрдиреН (рдЬрд╕реНрддреИ Vec ), рдЖрд╡рдВрдЯрди рдХреНрд░реЗрдЯрдорд╛ рдЫрдиреНред рдЕрдм рдПрд╕рдЯреАрдбреАрд▓реЗ рдпреА рднрд╛рдЧрд╣рд░реВ рдкреБрди: рдирд┐рд░реНрдпрд╛рдд рдЧрд░реНрдиреЗрдЫред рдпрд╕ рдмрд╛рд░реЗ рдердк.
  • рд╣реБрдирд╕рдХреНрдЫ рдпреБрдирд┐рдЯ mem::uninitialized рдХреЛ рд╕рдЯреНрдЯрд╛ред
    рдЕрдШрд┐рд▓реНрд▓реЛ рд░рд┐рд▓реАрдЬрд╣рд░реВрдорд╛, mem::uninitialized рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдЬрд╛рдБрдЪрд▓рд╛рдИ рдмрд╛рдЗрдкрд╛рд╕ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдПрдХреЛ рдЫ, рдпреЛ рдЕрд▓реНрдЫреА рдПрд░реЗ рдЖрд╡рдВрдЯрдирдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рддрд░ рдпреЛ рдкреНрд░рдХрд╛рд░реНрдп рдПрдХрджрдо рдЦрддрд░рдирд╛рдХ рдЫ (рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА), рддреНрдпрд╕реИрд▓реЗ MaybeUninit рдкреНрд░рдХрд╛рд░ рд╕реНрдерд┐рд░ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ , рдЬреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдЫред
    рдареАрдХ рдЫ, рд╣реБрдирд╕рдХреНрдЫ рдпреБрдирд┐рдирд┐рдЯ рдкрдЫрд┐ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд┐рдХрд▓реНрдк рд╣реЛ, рддреНрдпрд╕рдкрдЫрд┐ Rust 1.38 рдХреЛ рд░реВрдкрдорд╛, mem::uninitialized рдПрдХ рдмрд╣рд┐рд╖реНрдХреГрдд рд╕реБрд╡рд┐рдзрд╛ рд╣реБрдиреЗрдЫред
    рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЕрдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдореЗрдореЛрд░реАрдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдЬрд╛рдиреНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпреЛ рдмреНрд▓рдЧ рдкреЛрд╕реНрдЯ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ Alexis Beingessner рджреНрд╡рд╛рд░рд╛ред
  • рд░рд╕реНрдЯ 2015 рдХреЛ рд▓рд╛рдЧрд┐ NLLред
    рд╡рд┐рдЬреНрдЮрдкреНрддрд┐рдорд╛ рд░рд╕реНрдЯ рез рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ NLL (Non-Lexical Lifetime) рдХреЛ рдмрд╛рд░реЗрдорд╛ рдмрддрд╛рдЙрдиреБрднрдпреЛ, рднрд╛рд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рд╕реБрдзрд╛рд░ рдЬрд╕рд▓реЗ рдЙрдзрд╛рд░реЛ рдЬрд╛рдБрдЪрдХрд░реНрддрд╛рд▓рд╛рдИ рд╕реНрдорд╛рд░реНрдЯ рд░ рдЕрдзрд┐рдХ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛-рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдЙрдБрдЫред рдЙрджрд╛рд╣рд░рдг:
    fn main() {
    рдЪрд▓реЛ mut x = 5;
    y = &x;
    let z = &mut x; // рдпреЛ 1.31.0 рдЕрдШрд┐ рдЕрдиреБрдорддрд┐ рдерд┐рдПрдиред
    }

    1.31.0 рдорд╛, NLL рдорд╛рддреНрд░ Rust 2018 рдорд╛ рдХрд╛рдо рдЧрд░реНрдпреЛ, рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ Rust 2015 рдорд╛ рд╕рдорд░реНрдерди рдердкреНрдиреЗрдЫрдиреН рднрдиреНрдиреЗ рд╡рд╛рдЪрд╛рдХреЛ рд╕рд╛рдеред
    рдпрджрд┐ рддрдкрд╛рдЗрдБ NLL рдмрд╛рд░реЗ рдердк рдЬрд╛рдиреНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпрд╕рдорд╛ рдердк рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдмреНрд▓рдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВ (рдлреЗрд▓рд┐рдХреНрд╕ рдХреНрд▓реЛрдХреНрд╕)ред

  • рдХрд╛рд░реНрдЧреЛрдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдЭрдгреНрдбрд╛ тАФрдЕрдлрд▓рд╛рдЗрди рдЫред
    Rust 1.36 рд▓реЗ рдХрд╛рд░реНрдЧреЛрдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдЭрдгреНрдбрд╛ рд╕реНрдерд┐рд░ рдЧрд░реЗрдХреЛ рдЫред --offline рдлреНрд▓реНрдпрд╛рдЧрд▓реЗ рдХрд╛рд░реНрдЧреЛрд▓рд╛рдИ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдХреНрдпрд╛рд╕ рдЧрд░рд┐рдПрдХрд╛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдмрддрд╛рдЙрдБрдЫ рддрд╛рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рдкрдЫрд┐ рдЕрдлрд▓рд╛рдЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЬрдм рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдЕрдлрд▓рд╛рдЗрди рдЙрдкрд▓рдмреНрдз рдЫреИрдирдиреН, рд░ рдпрджрд┐ рдЗрдиреНрдЯрд░рдиреЗрдЯ рдЕрдЭреИ рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рдХрд╛рд░реНрдЧреЛрд▓реЗ рддреНрд░реБрдЯрд┐ рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗрдЫред рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдкреВрд░реНрд╡-рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдХрд╛рд░реНрдЧреЛ рдлреЗрдЪ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрд╕рд▓реЗ рд╕рдмреИ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреЗрдЫред
  • рдпреЛ рдЫ рддрдкрд╛рдИрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдХреЛ рдердк рд╡рд┐рд╕реНрддреГрдд рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдорд╛ рдкрдирд┐ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЫрдиреН:

рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реБ рдЦрд┐рдпрд╛рд▓реЗ, рдХрд╛рд░реНрдЧреЛ ╨╕ Clippy.

рд╕реНрд░реЛрдд: linux.org.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди