рдореИрдВ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рд╕рднреА рдХреА рдкрд╕рдВрджреАрджрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд░рд╕реНрдЯ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдкреНрд░рдХрд╛рд╢рди рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред
рдкрд░рд┐рдЪрдп
рд░рд╕реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдЯреАрдо рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг, 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 рдкрд░, 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
, рдирд┐рдХ рдХреИрдорд░рди рдХрд╛ рд▓реЗрдЦ рдкрдврд╝реЗрдВ ред рдХрд╛рд░реНрдЧреЛ рдХреЗ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдпрд╣рд╛рдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрджрд▓рддрд╛ рд╣реИ
dbg!
рдХрдИ рддрд░реНрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛;
рдХреБрдЫ рддрд░реАрдХреЗ рдирд┐рд░рдВрддрд░ рд╣реЛ рдЧрдП рд╣реИрдВ:
рдХреБрдЫ API рдХреЛ рд╕реНрдерд┐рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди
рд╕рдВрд╕реНрдХрд░рдг 1.36.0 рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдкрд░рд┐рд╡рд░реНрддрди рд╡рд┐рд╡рд░рдг, рд░реВрд╕реНрдЯ , рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп , рдХрд╛рд░реНрдЧреЛ рдФрд░ рдХреНрд▓рд┐рдкреНрдкреА рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рд╕рджрд╕реНрдп 1.36.0
рд░рд╕реНрдЯ 1.36.0 рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЛрдЧ рдПрдХ рд╕рд╛рде рдЖрдПред рд╣рдо рдЖрдк рд╕рднреА рдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдереЗ, рдзрдиреНрдпрд╡рд╛рдж !
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ
рд░рд╕реНрдЯ рднрд╛рд╖рд╛ рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рд╢реНрди рдХреЗ рд╕рд╛рде, рд╡реЗ рд░реВрд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдЯ рдореЗрдВ рдпрд╛ рдирд╡рд╛рдЧрдВрддреБрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдЪреИрдЯ рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред