рдЬрдВрдЧ 1.33 рд░рд┐рд▓реАрдЬ

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


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


 $ rustup update stable 

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


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


рдЗрд╕ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рдкреНрд░рдореБрдЦ рд╕реБрдзрд╛рд░: рдирдП рдкрд┐рди рдПрдкреАрдЖрдИ рдХреА const fn рдХреНрд╖рдорддрд╛рдУрдВ рдФрд░ рд╕реНрдерд┐рд░реАрдХрд░рдг рдХрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╕реНрддрд╛рд░ред


const fn рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛


const fn рдЕрдм рдФрд░ рдЕрдзрд┐рдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ , рдЕрд░реНрдерд╛рддреН:


  • рдмрд┐рдирд╛ рд╢рд░реНрдд (рдЕрдХрд╛рдЯреНрдп) рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реБрдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, const fn foo((x, y): (u8, u8)) { ... } )
  • рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛ред let x = 1; )
  • mutable let рдмрд╛рдЗрдВрдбрд┐рдВрдЧ (рдЙрджрд╛ред let mut x = 1; )
  • рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП x = y ) рдФрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП x += y ), рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕рд╣рд┐рдд (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлреАрд▓реНрдб рдпрд╛ рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо - x[3] = 42 )
  • рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрдерди (рдЬреИрд╕реЗ 3; )

рдЕрдм рдЖрдк "const fn" рд╕реЗ "const fn" рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:


 const unsafe fn foo() -> i32 { 5 } const fn bar() -> i32 { unsafe { foo() } } 

рдЗрди рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдирд┐рд░рдВрддрд░ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред рд╡реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред


рдкрд┐рди рдПрдкреАрдЖрдИ


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

рдХрднреА-рдХрднреА рдпрд╣ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рд╕реНрдореГрддрд┐ рдореЗрдВ рдЗрд╕рдХреЗ рдкрддреЗ рдХреА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдВред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкрд░рд┐рджреГрд╢реНрдп рд╕реНрд╡рдпрдВ-рд╕рдВрджрд░реНрднрд┐рдд рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЕрдорд╛рдиреНрдп рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ (рдпреВрдмреА) рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

Pin<P> рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ Pin<P> рдХрд┐рд╕реА рднреА рдкреЙрдЗрдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд╛рди рд╣реИ, рдЕрд░реНрдерд╛рддред рдЙрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреА рд╕реНрдореГрддрд┐ рдХреЛ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ "рдкрд┐рди рдХрд┐рдпрд╛ рдЧрдпрд╛" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЗрд╕ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдм рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ (рдЬреЛ рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ API рдХрд╛ рд╕реНрдерд┐рд░реАрдХрд░рдг рд╕рднреА Rust рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдкреНрд░рддреАрдХреНрд╖рд┐рдд async / await рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрджрдо рд╣реИред рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рд╢реЗрд╖ рдХрд╛рд░реНрдп рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА areweasyncyet.rs рдкрд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред


"_" рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВ


рдЕрдм рдЖрдк рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ "_" рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдпрд╣ рдЖрдкрдХреЛ рд╡рд░реНрддрдорд╛рди рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдЕрдкрдирд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:


 use std::io::Read as _; //     : pub trait Read {} 

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


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


рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬреЛ рдирд┐рд░рдВрддрд░ рдмрди рдЧрдИ рд╣реИ:



рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд API рд╕реНрдерд┐рд░ рд╣реИрдВ:



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


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


рдХрд╛рд░реНрдЧреЛ рдЕрдм рдЯреЛрдХрд░рд╛ рдХреЛ рдЖрд╢реНрд╡рд╕реНрдд рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдЗрд╕рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


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


Crates.io


рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдШреЛрд╖рдгрд╛ рдХреА рдЧрдИ рдереА , рдЗрд╕ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, crates.io рдХреЛ рдкреЛрд╕реНрдЯрд┐рдВрдЧ рдмрдХреНрд╕реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдИрдореЗрд▓ рдкрддреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред 2019-03-01 00:00 рдпреВрдЯреАрд╕реА рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░, рд╕рддреНрдпрд╛рдкрд┐рдд рдореЗрд▓ рдХреЗ рдмрд┐рдирд╛ рдЦрд╛рддреЛрдВ рдХреЗ рд╕рд╛рде cargo publish рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред


DMCA рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдЧреЛ рдиреЗ рд╣рд╛рд▓рд┐рдпрд╛ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдЕрдкрдиреЗ рдореЗрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП crates.io/me рдкрд░ рдЬрд╛рдПрдВред рдпрд╣ рдореЗрд▓рд┐рдВрдЧ рдкрддрд╛ рдХрднреА рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ crates.io рдХреА рдкреНрд░рддреНрдпрдХреНрд╖ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


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


рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЛрдЧреЛрдВ рдиреЗ рдорд┐рд▓рдХрд░ 1.33 рд░рд╕реНрдЯ рдмрдирд╛рдпрд╛ред рд╣рдо рдЖрдк рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдереЗред рдзрдиреНрдпрд╡рд╛рдж!

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


All Articles