рдЬрдВрдЧ 1.31 рдФрд░ рдЬрдВрдЧ 2018 рд░рд┐рд▓реАрдЬ

рд░рд╕реНрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреАрдо, рд░реБрд╕реНрдЯ рдХреЗ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг, 1.31.0, рд╕рд╛рде рд╣реА рд╕рд╛рде "рд░рд╕реНрдЯ 2018" рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХреА рдХреГрдкрд╛ рдХрд░ рд░рд╣реА рд╣реИред рд░рд╕реНрдЯ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ рдЬреЛ рд╕рднреА рдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рдХреБрд╢рд▓ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддреА рд╣реИред


рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬрдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдЬрдВрдЧ рдХрд╛ рдкрд┐рдЫрд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рддреЛ рдЬрдВрдЧ рдХреЛ рд╕рдВрд╕реНрдХрд░рдг 1.31.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 $ rustup update stable 

рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ rustup рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╣рдорд╛рд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреГрд╖реНрда рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Rust 1.31.0 рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯреНрд╕ GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред


рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг 1.31.0 рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ


рдЬрдВрдЧ 1.31 рдХреЗ рдмрд╛рдж рд╕реЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ 1.31 рд░рд╕реНрдЯ рд╣реИ! "рд░рд┐рд▓реАрдЬ 2018" рдХрд╛ рдкрд╣рд▓рд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЗрд╕ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдирд╡рд╛рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ! рд╕реБрдзрд╛рд░реЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рд▓рдВрдмреА рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛ рджреА рдЧрдИ рд╣реИ:


  • рдЬрдВрдЧ 2018
    • рдЬреАрд╡рди рдХреЗ рдЧреИрд░-рд╢рд╛рдмреНрджрд┐рдХ рд╕рдордп
    • рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдмрджрд▓рддрд╛ рд╣реИ
  • рдЬреАрд╡рдирдХрд╛рд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдпрдо
  • const fn
  • рдирдП рдЙрдкрдХрд░рдг
  • рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯрд▓ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рдЬрд╛рдБрдЪ
  • рдкреНрд░рд▓реЗрдЦрди
  • рдХрд╛рд░реНрдп рд╕рдореВрд╣реЛрдВ рдХреЛ рд╡рд┐рд╖рдп
  • рдирдИ рд╡реЗрдмрд╕рд╛рдЗрдЯ
  • рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╕реНрдерд┐рд░реАрдХрд░рдг
  • рдХрд╛рд░реНрдЧреЛ рд╕рдВрд╡рд░реНрджреНрдзрди
  • рд░рд┐рд▓реАрдЬ рдбреЗрд╡рд▓рдкрд░реНрд╕

рдЬрдВрдЧ 2018


рд╣рдордиреЗ рдорд╛рд░реНрдЪ рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рд░реВрд╕реНрдЯ 2018 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛, рдФрд░ рдлрд┐рд░ рдЬреБрд▓рд╛рдИ рдореЗрдВ ред рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд░реБрд╕реНрдЯ 2018 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ , рдЗрди рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред рдЗрд╕ рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ, рд╣рдореЗрдВ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗ рдХрд┐ 2018 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЛрдЬрд╝рд┐рд▓рд╛ рд╣реИрдХреНрд╕ ( рдЕрдиреБрд╡рд╛рдж ) рдкрд░ рдПрдХ рдкреЛрд╕реНрдЯ рдореЗрдВ рднреА рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, Rust 2018 рдЙрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрд╡рд╕рд░ рд╣реИ рдЬреЛ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рддреАрди рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдПрдХ рд╕реБрд╕рдВрдЧрдд рд╕рдВрдкреВрд░реНрдг рдореЗрдВ рдХрд┐рдпрд╛ рд╣реИред Rust 2018 рднрд╛рд╖рд╛ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдЙрдирдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:


  • рдЯреВрд▓рдХрд┐рдЯ (рдЖрдИрдбреАрдИ рдореЗрдВ рд╕рдорд░реНрдерди, rustfmt , rustfmt )
  • рдкреНрд░рд▓реЗрдЦрди
  • рдХрд╛рд░реНрдп рд╕рдореВрд╣реЛрдВ рдХреЛ рд╡рд┐рд╖рдп
  • рдирдИ рд╡реЗрдмрд╕рд╛рдЗрдЯ

рдЖрдЧреЗ рд╣рдо рдЗрд╕ рд╕рдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдФрд░ рдЕрдиреНрдп рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред


рдЪрд▓реЛ рдХрд╛рд░реНрдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ:


 $ cargo new foo 

рдпрд╣рд╛рдБ Cargo.toml рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИ:


 [package] name = "foo" version = "0.1.0" authors = ["Your Name <you@example.com>"] edition = "2018" [dependencies] 

[package] рдЕрдиреБрднрд╛рдЧ: edition рдПрдХ рдирдИ рдХреБрдВрдЬреА рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ 2018 рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рдЖрдк рдЗрд╕реЗ 2015 рдореЗрдВ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рдорд╛рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреБрдВрдЬреА рдЧрд╛рдпрдм рд╣реИред


Rust 2018 рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдХреБрдЫ рдирдП рдлреАрдЪрд░реНрд╕ рдЕрдирд▓реЙрдХ рд╣реЛрдВрдЧреЗ рдЬреЛ Rust 2015 рдореЗрдВ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред


рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ 2015 рдпрд╛ 2018 рдореЛрдб рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡реЗ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдЖрдкрдХрд╛ 2018 рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░реЛрдЬреЗрдХреНрдЯ 2015 рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ 2015 рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░реЛрдЬреЗрдХреНрдЯ 2018 рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рд╕рднреА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реЛрдВрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдЖрдк Rust 2015 рдХреЛрдб рдХреЛ Rust 2018 рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ cargo fix рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдЖрдк рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ: рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрдиреНрд╣реЗрдВ рд░реБрд╕реНрдЯ 2015 рдореЗрдВ рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рд╡реЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рд╖рд╛ рд╣рд░ рдЬрдЧрд╣ рдПрдХ рд╕рдорд╛рди рд░рд╣рддреА рд╣реИред рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рдЙрд╕рдХреА рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП rustc рдХреЗ рдиреНрдпреВрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрдХреАрдп рдореИрдиреБрдЕрд▓ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдИ рдмрдбрд╝реЗ рдирд╡рд╛рдЪрд╛рд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрд▓рдЧ рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдЧреИрд░-рд╢рд╛рдмреНрджрд┐рдХ рдЬреАрд╡рдирдХрд╛рд▓ рдФрд░ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ред


рдЬреАрд╡рди рдХреЗ рдЧреИрд░-рд╢рд╛рдмреНрджрд┐рдХ рд╕рдордп


рдпрджрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЬрдВрдЧ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрднреА-рдХрднреА "рдПрдирдПрд▓рдПрд▓" рдпрд╛ "рдЧреИрд░-рд╢рд╛рдмреНрджрд┐рдХ рдЬреАрд╡рдирдХрд╛рд▓" рд╢рдмреНрдж рдкрд░ рдЖ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╢рдмреНрджрдЬрд╛рд▓ рд╣реИ, рдЬреЛ рд╕рд░рд▓ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдХрд╛ рдЕрд░реНрде рд╣реИ: рдЙрдзрд╛рд░рдХрд░реНрддрд╛ рд╣реЛрд╢рд┐рдпрд╛рд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм рдХреБрдЫ рд╕рд╣реА рдХреЛрдб рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЙрд╕рдиреЗ рдкрд╣рд▓реЗ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдерд╛ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


 fn main() { let mut x = 5; let y = &x; let z = &mut x; } 

рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЬрдВрдЧ:


 error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable --> src/main.rs:5:18 | 4 | let y = &x; | - immutable borrow occurs here 5 | 6 | let z = &mut x; | ^ mutable borrow occurs here 7 | } | - immutable borrow ends here 

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓рд┐рдВрдХ рдХреЗ рдЬреАрд╡рди рдХрд╛ рдХреНрд╖реЗрддреНрд░ "рд▓реЗрдХреНрд╕рд┐рдХрд▓реА" рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛; рдпрд╛рдиреА, рдЙрдзрд╛рд░ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ y рдХреЛ рддрдм рддрдХ рд╕рдХреНрд░рд┐рдп рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ рдЬрдм рддрдХ y main рдХреЗ рдЕрдВрдд рдореЗрдВ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдЖ рдЬрд╛рддрд╛, рднрд▓реЗ рд╣реА рд╣рдо рдХрднреА рднреА y рдЙрдкрдпреЛрдЧ рджреЛрдмрд╛рд░рд╛ рд╕реНрдХреЛрдк рдХреЗ рдЕрдВрджрд░ рди рдХрд░реЗрдВред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд░реНрднрд░рддрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрд╕реЗ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдПред


рдЕрдм рдпрд╣ рдХреЛрдб рдареАрдХ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред


рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо y рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:


 fn main() { let mut x = 5; let y = &x; let z = &mut x; println!("y: {}", y); } 

рдЬрдВрдЧ рдЖрдкрдХреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рдерд╛:


 error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable --> src/main.rs:5:18 | 4 | let y = &x; | - immutable borrow occurs here 5 | let z = &mut x; | ^ mutable borrow occurs here ... 8 | } | - immutable borrow ends here 

Rust 2018 рдореЗрдВ, рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реБрдЖ:


 error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable --> src/main.rs:5:13 | 4 | let y = &x; | -- immutable borrow occurs here 5 | let z = &mut x; | ^^^^^^ mutable borrow occurs here 6 | 7 | println!("y: {}", y); | - borrow later used here 

рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ y рдХрд╣рд╛рдБ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдЙрдзрд╛рд░ рдХрд╣рд╛рдБ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреА рдбреАрдмрдЧрд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред


рд░реБрд╕реНрдЯ 1.31 рдореЗрдВ, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░рд╕реНрдЯ 2018 рдХреЗ рд▓рд┐рдП рд╕реБрдзрд╛рд░ рд╣реИред рд╣рдо рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рд░рд╕реНрдЯ 2015 рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред


рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдмрджрд▓рддрд╛ рд╣реИ


рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рд░рд╕реНрдЯ рд╕реАрдЦ рд░рд╣реЗ рд╣реИрдВред рдмреЗрд╢рдХ, рд╣рдореЗрд╢рд╛ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдорд╛рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд▓реЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдмрд╣реБрддреЛрдВ рдХреЗ рд▓рд┐рдП рд╢рд░реНрдордирд╛рдХ рд╣реИрдВ, рдпрд╣ рд╣реИ рдХрд┐ рд╕рд░рд▓ рдФрд░ рд╕реБрд╕рдВрдЧрдд рдирд┐рдпрдореЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЬреЛ рдореЙрдбреНрдпреВрд▓ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА, рд░рд╣рд╕реНрдпрдордп рдФрд░ рдЕрдкреНрд░рд╛рдХреГрддрд┐рдХ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред


рдЗрд╕рд▓рд┐рдП, 2018 рд╕рдВрд╕реНрдХрд░рдг рдкрде рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд░рддрд╛ рд╣реИ, рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИред


рдпрд╣рд╛рдБ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢ рд╣реИ:


  • extern crate рдЕрдм рд▓рдЧрднрдЧ рдХрд╣реАрдВ рдФрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
  • рдЖрдк #[macro_use] рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдХреНрд░реЛ рдХрд╛ use рдХрд░рдХреЗ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдкреВрд░реНрдг рдкрде рдХрдВрдЯреЗрдирд░ рдХреЗ рдирд╛рдо рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ crate рдХреАрд╡рд░реНрдб рд╡рд░реНрддрдорд╛рди рдХрдВрдЯреЗрдирд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
  • foo.rs рдФрд░ foo/ subdirectory рд╕рд╣-рдЕрд╕реНрддрд┐рддреНрд╡рд╡рд╛рджреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ; mod.rs рдЖрд╡рд╢реНрдпрдХрддрд╛ рддрдм рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдЬрдм mod.rs рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдирд┐рдпрдореЛрдВ рдХреЗ рдПрдХ рдордирдорд╛рдиреЗ рд╕реЗрдЯ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рдХреЛ рдЕрдм рдмрд╣реБрдд рд╕рд░рд▓ рдмрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдЕрднреА рднреА рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рд╡рд░рдг рд╣реИрдВ, рдХреГрдкрдпрд╛ рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрдХреАрдп рдореИрдиреБрдЕрд▓ рджреЗрдЦреЗрдВред


рдЬреАрд╡рдирдХрд╛рд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдпрдо


рдЖрдЗрдП рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ: рд╣рдордиреЗ impl рдмреНрд▓реЙрдХ рдФрд░ рдлрдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдВрдЬреЗрдХреНрд╢рди рдирд┐рдпрдо рдЬреЛрдбрд╝реЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЛрдб:


 impl<'a> Reader for BufReader<'a> { //   } 

рдЕрдм рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 impl Reader for BufReader<'_> { //   } 

рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо '_ рдЕрднреА рднреА рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ BufReader рдЗрд╕реЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрдм рдЗрд╕реЗ рдХреЛрдИ рдирд╛рдо рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рдЬреАрд╡рдирд╢реИрд▓реА рдХреЛ рдЕрднреА рднреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдореЗрдВ рдЕрдм рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:


 // Rust 2015 struct Ref<'a, T: 'a> { field: &'a T } // Rust 2018 struct Ref<'a, T> { field: &'a T } 

рдирд┐рд░реНрднрд░рддрд╛ : 'a рд╣реЛрдЧрд╛ рдЙрддреНрдкрд╛рджрдиред рдЖрдк рдЕрднреА рднреА рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВред рд╣рдо рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдРрд╕реА рдЬрдЧрд╣реЛрдВ рдкрд░ рдирд┐рдХрд╛рд╕реА рдХреЗ рдЕрдиреНрдп рдЕрд╡рд╕рд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдареЛрд╕ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИред


const fn


рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдВрдЧ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ: рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП unsafe fn , рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд unsafe fn , рдФрд░ рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА extern fn ред рдпрд╣ рд░рд┐рд▓реАрдЬрд╝ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ: const fn ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


 const fn foo(x: i32) -> i32 { x + 1 } 

рдПрдХ рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдирд┐рд░рдВрддрд░ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╕рдордп рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдирд╣реАрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:


 const SIX: i32 = foo(5); 

foo рдлрд╝рдВрдХреНрд╢рди рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧрд╛ рдФрд░ SIX рдХреЛ 6 рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рд▓рдЧрд╛рддрд╛рд░ рдХрд╛рд░реНрдп рд╡рд╣ рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЙрдирдХреЗ рд▓рд┐рдП рдирд┐рдпрддрд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╡рд░реНрддрдорд╛рди рд░реВрдк рдореЗрдВ, рдирд┐рд░рдВрддрд░ рдХрд╛рд░реНрдп рдиреНрдпреВрдирддрдо рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ рдХрд┐ рдЖрдк рдЙрдирдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


  • рдкреВрд░реНрдгрд╛рдВрдХ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдФрд░ рддреБрд▓рдирд╛рддреНрдордХ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
  • && рдФрд░ ||
  • рдбрд┐рдЬрд╛рдЗрди рд╕рд░рдгрд┐рдпрд╛рдБ, рд╕рдВрд░рдЪрдирд╛рдПрдВ, рдЧрдгрдирд╛, рдФрд░ рдЯреБрдкрд▓реНрд╕
  • рдЕрдиреНрдп рд╕реНрдерд┐рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ
  • рдПрд░реЗ рдФрд░ рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдкрд╣реБрдВрдЪ
  • рд╕рдВрд░рдЪрдирд╛рдУрдВ рдФрд░ рдЯреБрдкрд▓реНрд╕ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдирд╛
  • рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рд▓реЗрдХрд┐рди рд╕реНрдерд┐рд░ рдореВрд▓реНрдп рдирд╣реАрдВ, рдФрд░ рдЙрдирдХреЗ рд╕рдВрджрд░реНрдн рднреА рдирд╣реАрдВ)
  • рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
  • рдХрдЪреНрдЪреЗ рд╕реВрдЪрдХ рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд╛рд╕реНрдЯ рдкреНрд░рдХрд╛рд░

рд╣рдо рдирд┐рд░рдВрддрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЙрдкрд░реЛрдХреНрдд рд╕реЗрдЯ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ const fn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред


рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ рджреЗрдЦреЗрдВред


рдирдП рдЙрдкрдХрд░рдг


2018 рд╕рдВрд╕реНрдХрд░рдг рд░рд╕реНрдЯ рдЯреВрд▓ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдкрдХреНрд╡рддрд╛ рдХреЗ рдПрдХ рдирдП рд╕реНрддрд░ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 1.0 рдХреЗ рдмрд╛рдж рд╕реЗ рдХрд╛рд░реНрдЧреЛ, рд░реБрд╕реНрдЯрдбреЙрдХ рдФрд░ рд░реБрд╕реНрддреВрдк рдореБрдЦреНрдп рдЙрдкрдХрд░рдг рд╣реИрдВ; 2018 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде, рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдПрдХ рдирдИ рдкреАрдврд╝реА рдЖ рд░рд╣реА рд╣реИ рдЬреЛ рдЕрдм рд╣рд░ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдХреНрд▓рд┐рдкреНрдкреА, рд░рд╕реНрдЯрдлрд╝рдордЯ рдФрд░ рдЖрдИрдбреАрдЖрдИ рд╕рдорд░реНрдердиред


clippy рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдЕрдм рд╕реНрдЯреЗрдмрд▓ рд░рд╕реНрдЯ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЖрдк рдЗрд╕реЗ rustup component add clippy рдЬрд░рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ rustup component add clippy рдФрд░ рдЗрд╕реЗ cargo clippy ред рдХреНрд▓рд┐рдкреНрдкреА рдХреЛ рдЕрдм рд╕рдВрд╕реНрдХрд░рдг 1.0 рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕реНрдереИрддрд┐рдХ рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕реНрдерд┐рд░рддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред рдирдП рдЪреЗрдХ рдЬреЛрдбрд╝реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдкреБрд░рд╛рдиреЗ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреБрд░рд╛рдиреЗ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ (рд╡реЗ рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдб рдЬреЛ рдХреНрд▓рд┐рдкреНрдкреА рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдХреНрд▓реИрдкреА рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдХреЛрдИ рдЪреЗрдХ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ
deny рдорд╛рдзреНрдпрдо deny рддреНрд░реБрдЯрд┐), рд▓реЗрдХрд┐рди рдирдИ рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред


Rustfmt , Rust рдореЗрдВ рдХреЛрдб рдХреЛ рдлреЙрд░реНрдореЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреЛрдб рд╕реНрд╡рд░реВрдкрдг рдЖрдкрдХреЛ рд╕рдордп рдмрдЪрд╛рдПрдЧрд╛, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд╕реНрдЯ рд╢реИрд▓реА рдХреЗ рдХрд░реАрдм рд▓рд╛рдПрдЧрд╛ред рдЖрдк рдЗрд╕реЗ rustup component add rustfmt рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ rustup component add rustfmt рдФрд░ cargo fmt rustup component add rustfmt рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд╡рд░реНрддрдорд╛рди рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ Rustfmt 1.0 рд╢рд╛рдорд┐рд▓ рд╣реИред рдЕрдм рд╕реЗ, рд╣рдо Rustfmt рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддреЗ рд╣реИрдВ: рдпрджрд┐ рдЖрдк рдЖрдЬ рдЕрдкрдирд╛ рдХреЛрдб рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реНрд╡рд░реВрдкрдг рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред рдмреИрдХрд╡рд░реНрдб рдХрдореНрдкреИрдЯрд┐рдмрд┐рд▓рд┐рдЯреА рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдм рдЖрдкрдХреЗ CI рдкрд░ Rustfmt рдХреЛ рдЪрд▓рд╛рдирд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ ( cargo fmt --check --check рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ)ред рд╕рдВрдкрд╛рджрдХ рдореЗрдВ "рд╕рд╣реЗрдЬрддреЗ рд╕рдордп рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ" рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдБ, рдФрд░ рдЖрдкрдХреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рдХреНрд░рд╛рдВрддрд┐ рд╣реЛ рдЬрд╛рдПрдЧреАред


рдЖрдИрдбреАрдИ рд╕рдкреЛрд░реНрдЯ рд░реБрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЕрдиреБрд░реЛрдзрд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЕрдм рдХрдИ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ:



IDE рдореЗрдВ рд╕рдорд░реНрдерди рдХрд╛рд░реНрдп рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрд░рдПрд▓рдПрд╕-рдЖрдзрд╛рд░рд┐рдд рд╕рдВрдкрд╛рджрдХреЛрдВ рдореЗрдВ рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд░, рдкреНрд░рд▓реЗрдЦрди, рдФрд░ "рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг" рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдВрддреБрд╖реНрдЯ рд╣реЛрдВрдЧреЗред


рдЗрдВрд╕реНрдЯреНрд░реБрдореЗрдВрдЯрд▓ рдХреЛрдб рдХреНрд╡рд╛рд▓рд┐рдЯреА рдЪреЗрдХ (рдЯреВрд▓ рд▓рд┐рдВрдЯ)


1.30 рд░рд╕реНрдЯ рдореЗрдВ, рд╣рдордиреЗ "рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯрд▓ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕" рдЬреИрд╕реЗ рдХрд┐ #[rustfmt::skip] рд╕реНрдерд┐рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рд░рд╕реНрдЯ 1.31 рдореЗрдВ, рд╣рдордиреЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реНрдерд┐рд░ рдХрд┐рдпрд╛: "рдЯреВрд▓ рд▓рд┐рдВрдЯреНрд╕" рдЬреИрд╕реЗ #[allow(clippy::bool_comparison)] ред рдпрд╣ рдЖрдкрдХреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛рдо рд╕реНрдерд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХрд┐рд╕ рдЙрдкрдХрд░рдг рд╕реЗ рдЖрддреЗ рд╣реИрдВред


рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ Clippy рдЪреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 //  #![cfg_attr(feature = "cargo-clippy", allow(bool_comparison))] //  #![allow(clippy::bool_comparison)] 

рдЕрдм рдЖрдкрдХреЛ cfg_attr рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ! рдЕрдм рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рднреА рдорд┐рд▓реЗрдЧреА рдЬреЛ рдЖрдкрдХреЛ рдирдИ рд╢реИрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреАред


рдкреНрд░рд▓реЗрдЦрди


рдЗрд╕ рд╡рд░реНрд╖ рд░реБрд╕реНрддрдбреЛрдХ рдореЗрдВ рдХрдИ рд╕реБрдзрд╛рд░ рд╣реБрдП, рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд┐рдд рдкреБрд╕реНрддрдХ, рдж рд░рд╕реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдХрд╛ рд╡рд┐рдореЛрдЪрди рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЖрдк рдиреЛ рд╕реНрдЯрд╛рд░реНрдЪ рдкреНрд░реЗрд╕ рд╕реЗ рдПрдХ рдкреЗрдкрд░ рдХреЙрдкреА рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВ!


рдЗрд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рддрд╛рдм рдХрд╛ "рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг" рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓рд╛ рдкреНрд░рд┐рдВрдЯ рд╕рдВрд╕реНрдХрд░рдг рдмрди рдЧрдпрд╛, рдЗрд╕ рдХрд╛рд░рдг рднреНрд░рдо рдкреИрджрд╛ рд╣реБрдЖред рдЖрдЦрд┐рд░рдХрд╛рд░, рдкреНрд░рд┐рдВрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдиреЛ рд╕реНрдЯрд╛рд░реНрдЪ рдХреЗ рд╕рд╛рде рдХрдИ рдЪрд░реНрдЪрд╛рдУрдВ рдХреЗ рдмрд╛рдж, рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рд╛рде рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкреБрд╕реНрддрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдФрд░ рдХреЛрдИ рд╕реНрдЯрд╛рд░реНрдЪ рд╕рдордп-рд╕рдордп рдкрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЙрдард╛рдПрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧрд╛ред рдХрд┐рддрд╛рдм рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмреЗрдЪрддреА рд╣реИ рдФрд░ рдмреНрд▓реИрдХ рдЧрд░реНрд▓реНрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдкреИрд╕реЗ рдЬреБрдЯрд╛рддреА рд╣реИред


рдЖрдк рдкреБрд╕реНрддрдХ рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдпрд╣рд╛рдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдХрд╛рд░реНрдп рд╕рдореВрд╣реЛрдВ рдХреЛ рд╡рд┐рд╖рдп


рдЗрд╕ рд╕рд╛рд▓ рд╣рдордиреЗ рдЪрд╛рд░ рдХрд╛рд░реНрдпрдХрд╛рд░реА рд╕рдореВрд╣реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдШреЛрд╖рдгрд╛ рдХреА:


  • рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрд╡рд╛рдПрдВ
  • рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЖрд╡реЗрджрди
  • WebAssembly
  • рдПрдВрдмреЗрдбреЗрдб рдбрд┐рд╡рд╛рдЗрд╕

рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЬрдВрдЧ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣реЛрдВ рдиреЗ рдмрд╣реБрдд рдореЗрд╣рдирдд рдХреАред рдпрд╣рд╛рдВ рдХреБрдЫ рдЙрдкрд▓рдмреНрдзрд┐рдпрд╛рдВ рджреА рдЧрдИ рд╣реИрдВ:


  • рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрд╡рд╛рдУрдВ рдиреЗ рдлрд╝реНрдпреВрдЪрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ async / рдкреНрд░рддреАрдХреНрд╖рд╛ред рдпреЗ рд╕реБрдзрд╛рд░ рдЕрднреА рддрдХ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреЗ рдХрд░реАрдм рд╣реИрдВ!
  • CLI рдЯреАрдо рдиреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ред
  • WebAssembly рдиреЗ Rust рдХреЛ wasm рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░реАрдп рдЙрдкрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдП рд╣реИрдВред
  • рдПрдореНрдмреЗрдбреЗрдб рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдЖрд░рдПрдо рдХреЛ рдПрдХ рд╕реНрдерд┐рд░ рдЬрдВрдЧ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛!

рдЖрдк рд╣рдорд╛рд░реА рдирдИ рд╕рд╛рдЗрдЯ рдкрд░ рдЗрд╕ рд╕рдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ!


рдирдИ рд╡реЗрдмрд╕рд╛рдЗрдЯ


рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ рд╣рдордиреЗ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рдЕрдм рдпрд╣ rust-lang.org рдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдмрди рдЧрдпрд╛ рд╣реИ!


рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрдИ рд▓реЛрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕рд╛рд▓ рдХрд╛ рд╕рдордп рд▓рдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрднреА рднреА рдмрд╣реБрдд рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдмрд╛рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХрд┐рдП рдЧрдП рдХрд╛рдо рдкрд░ рдЧрд░реНрд╡ рд╣реИред


рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╕реНрдерд┐рд░реАрдХрд░рдг


рдирдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди From рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ:


  • u8 рдЕрдм From<NonZeroU8> рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕реА рддрд░рд╣ рдЕрдиреНрдп рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЙрдирдХреЗ NonZero рд╕рдордХрдХреНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП
  • Option<&T> рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ From<&Option<T>> , рдЗрд╕реА рддрд░рд╣ рд╕реЗ &mut

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рднреА рд╕реНрдерд┐рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯ рджреЗрдЦреЗрдВред


рдХрд╛рд░реНрдЧреЛ рд╕рдВрд╡рд░реНрджреНрдзрди


HTTP / 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдЧреЛ рдЕрдм рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдЧрд╛ред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ extern crate рдЕрдм рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП extern crate foo as bar; рд▓рд┐рдЦрдирд╛ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реЛрдЧрд╛ extern crate foo as bar; рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ Cargo.toml рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░реЗрдВ:


 [dependencies] baz = { version = "0.1", package = "foo" } 

рдпрд╛, рд╕рдорддреБрд▓реНрдп:


 [dependencies.baz] version = "0.1" package = "foo" 

foo рдХреЛрдб рдЕрдм рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП baz рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред


рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯ рджреЗрдЦреЗрдВред


рдбреЗрд╡рд▓рдкрд░реНрд╕ 1.31.0


рдЖрдорддреМрд░ рдкрд░, рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ ред рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░, рдЕрддреАрдд рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рд╕реВрдЪреА рдЙрди рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдорджрдж рдХреА, рдФрд░ рдЬреЛ рднреА рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╡рд╣ рд╕рднреА рд░рд╛рд╢рд┐ред рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдорд┐рдд рд░рд┐рд▓реАрдЬ рдЫрд╣ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд░рд┐рд▓реАрдЬ рддреАрди рд╕рд╛рд▓ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреА рдкрд░рд┐рдгрддрд┐ рд╣реИ, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдЕрд╕рдВрдЦреНрдп рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдЖрдк рд╕рднреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреГрдкрд╛ рдХрд░ рд░рд╣реЗ рдереЗ, рдФрд░ рд╣рдо рдЕрдЧрд▓реЗ рддреАрди рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдЬрдВрдЧ рдХреЗ рдирд┐рд░рдВрддрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реИрдВред


рдПрдХ рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдореИрдВ рд░рд╕реНрдЯреАрдХреНрд░реЗрдЯ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ @dashadee , ozkriff , humbug рдФрд░ mvlabat рдХреЛ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдкреНрд░реВрдлрд░реАрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЙрдирдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реВрдВред

Source: https://habr.com/ru/post/hi432640/


All Articles