рдЬрдВрдЧ 1.36.0 рд░рд┐рд▓реАрдЬ: рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рдХреНрд╖рдг, рдЖрд╡рдВрдЯрди рд╕реНрдерд┐рд░реАрдХрд░рдг рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпреВрдиреЗрдЯрд┐рдЯ <рдЯреА>

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


рдкрд░рд┐рдЪрдп


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


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


 $ rustup update stable 

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


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


рдЗрд╕ рд░рд┐рд▓реАрдЬ рдиреЗ рдХрдИ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд Future рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╕реНрдерд┐рд░реАрдХрд░рдг, alloc MaybeUninit<T> , рд╣реЛ MaybeUninit<T> , MaybeUninit<T> рд╕рдВрд░рдЪрдирд╛, MaybeUninit<T> NLL Rust 2015 , MaybeUninit<T> рдирдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди HashMap<K, V> рдФрд░ рдХрд╛рд░реНрдЧреЛ рдореЗрдВ --offline рдзреНрд╡рдЬ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред


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


рднрд╡рд┐рд╖реНрдп рд╕реНрдерд┐рд░реАрдХрд░рдг


рдЬрдВрдЧ 1.36.0 рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд Future рд╕реНрдерд┐рд░ рдХрд░ рджрд┐рдпрд╛!


рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рдирд╡рд╛рдЪрд╛рд░ рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдХреНрд░реЗрдЯ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдкреВрд░реЗ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдХреЛ .await / .await рдХреА рддреИрдпрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ .await , рдЬрд┐рд╕реЗ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред


рд░реИрдХ рдХрд╛ рд╕реНрдерд┐рд░реАрдХрд░рдг


рд╕рдВрд╕реНрдХрд░рдг 1.36.0 рд╕реЗ рдкрд╣рд▓реЗ, рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ std , core рдФрд░ proc_macro ред core рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдереА (рдЬреИрд╕реЗ рдХрд┐ Iterator рдФрд░ Copy ) рдФрд░ #![no_std] рд╕рд╛рде рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред рдЗрд╕ рдмреАрдЪ, std рдХреНрд░реЗрдЯ рдиреЗ Box<T> , рд╕рд╛рде рд╣реА рд╕рд╛рде рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рд╡реИрд╢реНрд╡рд┐рдХ рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛) рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреАред


рд░реВрд╕реНрдЯ 1.36.0 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, std рдЯреЛрдХрд░рд╛ рдХреЗ рдШрдЯрдХ, рд╡реИрд╢реНрд╡рд┐рдХ рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Vec<T> , рдЕрдм рдЖрд╡рдВрдЯрд┐рдд alloc рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЗрд╕ рдмреАрдЪ, std , рдЗрди рдШрдЯрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИред


рдЬрдмрдХрд┐ #![no_std] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП #![no_std] рдЕрднреА рднреА nightly рдЪреИрдирд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, c #![no_std] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╕реНрдерд┐рд░ #![no_std] alloc ред


рд╣рдо рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА "рдирд┐рдпрдорд┐рдд" рдХрд╛рд░реНрдпрдХреНрд░рдо (рдмрд┐рдирд╛ #![no_std] ) рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ #![no_std] рд╕рд╛рде рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ #![no_std] рд╕рд╛рде рд╕рдВрдЧрдд рдПрдХ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред


рдпрджрд┐ рдЖрдк рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдбреЗрд╡рд▓рдкрд░ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрди рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдЖрдкрдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ #![no_std] рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ #![no_std] lib.rs рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП:


 #![no_std] extern crate alloc; use alloc::vec::Vec; 

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпреВрдиреАрдЯ рдЬрдЧрд╣ рдореЗрдо :: рдЕрдирдЗрдВрд╕реНрдЯрд╛рд▓реНрдб


рд░рд╕реНрдЯ рдХреЗ рдкрд┐рдЫрд▓реЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ, mem::uninitialized рдлрд╝рдВрдХреНрд╢рди рдиреЗ рдЖрдкрдХреЛ рдЖрд░рдВрднреАрдХрд░рдг рдЬрд╛рдВрдЪ рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЖрдк рдХреБрдЫ рднреА рдХрд┐рдП рдмрд┐рдирд╛ T рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдереЗред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдЙрдкрдпреЛрдЧ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ "рдЖрд▓рд╕реА" рдЖрд╡рдВрдЯрди рдерд╛ред


рд╣рд╛рд▓рд╛рдБрдХрд┐, mem::uninitalized рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рдЦрддрд░рдирд╛рдХ рдСрдкрд░реЗрд╢рди рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд╕реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╕рднреА рдорд╛рди рдареАрдХ рд╕реЗ рдЖрд░рдореНрдн рдХрд┐рдП рдЧрдП рд╣реИрдВред


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЙрд▓рд┐рдВрдЧ mem::uninitialized::<bool>() рддреБрд░рдВрдд рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд░реБрд╕реНрдЯ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЕрдирдЗрдВрд╕реНрдЯрд╛рд▓реНрдпреВрдЯрд╛рдЗрдЬреНрдб рдмрд┐рдЯреНрд╕ рдпрд╛ рддреЛ рд╢реВрдиреНрдп ( false ) рдпрд╛ рдПрдХрддрд╛ ( true ) рд╣реИрдВ, рдФрд░ рдЙрдкрд░реЛрдХреНрдд рджреЛ рдкреИрдЯрд░реНрди bool рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ ред


рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдк рдХрд░реЗрдВ MaybeUninit<T> рдХреЛ Rust 1.36.0 рдореЗрдВ рд╕реНрдерд┐рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд░рд╕реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрдм MaybeUninit<T> рдирд╣реАрдВ рдорд╛рдирддрд╛ рд╣реИ MaybeUninit<T> рдХрд╛ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рдХрд╛рд░ рд╣реИ T рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдХреНрд░рдорд┐рдХ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрдд рдореЗрдВ .assume_init() рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд▓реЗрдВ рдХрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ maybe_t: MaybeUninit<T> рдореЗрдВ рдЖрд░рдВрднреАрдХреГрдд рдкреНрд░рдХрд╛рд░ T


рдЪреВрдБрдХрд┐ MaybeUninit<T> Rust 1.38 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЗрд╕рд▓рд┐рдП mem::uninitialized рдлрд╝рдВрдХреНрд╢рди рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╣реЛрдЧрд╛ред


MaybeUninit<T> рдореЗрдореЛрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, mem::uninitialized рдФрд░ MaybeUninit<T> , рдПрд▓реЗрдХреНрд╕рд┐рд╕ рдмреЗрд╕реЗрдирд░ рдХрд╛ рд▓реЗрдЦ рдкрдврд╝реЗрдВред рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ MaybeUninit<T> рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рджрд╕реНрддрд╛рд╡реЗрдЬ рднреА рд╣реИрдВред


рд░рд╕реНрдЯ 2015 рдХреЗ рд▓рд┐рдП рдПрдирдПрд▓рдПрд▓


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


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

1.31.0 рдкрд░, NLL рдХреЛ рдХреЗрд╡рд▓ Rust 2018 рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рдорд╛рди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ Rust 2015 рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрдВрдЧреЗред рдпрд╣ рд░реБрд╕реНрдЯ 1.36.0 рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдПрдирдПрд▓рдПрд▓ рд░реБрд╕реНрдЯ 2015 рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЧрдпрд╛ред


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


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


рдПрдирдПрд▓рдПрд▓, рдПрдордЖрдИрдЖрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдмрдВрдзрд┐рдд рдЕрдЦрдВрдбрддрд╛ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдлреЗрд▓рд┐рдХреНрд╕ рдХреНрд▓реЛрдХ рдХреЗ рд▓реЗрдЦ рдХреЛ рдкрдврд╝реЗрдВ ред


рдирдпрд╛ рд╣рд╛рд╢рдк рд▓рд╛рдЧреВ


рдЬрдВрдЧ 1.36.0 рдореЗрдВ, рд╣реИрд╢рдкрдк HashMap<K, V> рдХреЗ рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕реНрд╡рд┐рд╕рдЯреЗрдмрд▓ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реИрд╢рдмреНрд░реЛ hashbrown рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдорд╛рди рд░рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд╕рдд рд░реВрдк рд╕реЗ рддреЗрдЬрд╝реА рд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХрдо рдореЗрдореЛрд░реА рдЦрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрднреА рднреА SipHash 1-3 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред


- рдХрд╛рд░реНрдЧреЛ рдореЗрдВ рдСрдлрд╝рд▓рд╛рдЗрди рд╕рд╣рд╛рдпрддрд╛


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


рд░рд╕реНрдЯ 1.36.0 рдиреЗ рдирдпрд╛ рдЭрдВрдбрд╛ --рдСрдлрд▓рд╛рдЗрди рдХреЛ рд╕реНрдерд┐рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рдзреНрд╡рдЬ рд╕реНрдерд╛рдиреАрдп рдХреИрд╢реНрдб рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдирд┐рд░реНрднрд░рддрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИред


рдпрджрд┐ рдЕрдиреБрд░реЛрдзрд┐рдд рдХреНрд░реЗрдЯ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдмрд┐рдирд╛ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХрд╛рд░реНрдЧреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рдПрдЧрд╛ред рдиреЗрдЯрд╡рд░реНрдХ рдЫреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдерд╛рдиреАрдп рдХреИрд╢ рдХреЛ рдкреНрд░реА-рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, cargo fetch рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред


--offline рдФрд░ cargo fetch рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ cargo fetch , рдирд┐рдХ рдХреИрдорд░рди рдХрд╛ рд▓реЗрдЦ рдкрдврд╝реЗрдВ ред рдХрд╛рд░реНрдЧреЛ рдХреЗ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдпрд╣рд╛рдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред


рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрджрд▓рддрд╛ рд╣реИ



рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди


рд╕рдВрд╕реНрдХрд░рдг 1.36.0 рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдкрд░рд┐рд╡рд░реНрддрди рд╡рд┐рд╡рд░рдг, рд░реВрд╕реНрдЯ , рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп , рдХрд╛рд░реНрдЧреЛ рдФрд░ рдХреНрд▓рд┐рдкреНрдкреА рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред


рд╕рджрд╕реНрдп 1.36.0


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


рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ


рд░рд╕реНрдЯ рднрд╛рд╖рд╛ рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рд╢реНрди рдХреЗ рд╕рд╛рде, рд╡реЗ рд░реВрд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдЯ рдореЗрдВ рдпрд╛ рдирд╡рд╛рдЧрдВрддреБрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдЪреИрдЯ рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред


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


All Articles