рд╡рд┐рдХрд╛рд╕ рдХрд╛рд░реНрдпрд╕рдВрдШ рд░рд╕реНрдЯ 1.36 рд╕рд╛рджрд░ рдХрд░рдгреНрдпрд╛рд╕ рдЙрддреНрд╕реБрдХ рдЖрд╣реЗ!
Rust 1.36 рдордзреНрдпреЗ рдирд╡реАрди рдХрд╛рдп рдЖрд╣реЗ?
рдЖрдгрд┐ рдЖрддрд╛ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░:
- рд╢реЗрд╡рдЯреА рдЧрдВрдЬ 1.36 рдордзреНрдпреЗ рд╕реНрдерд┐рд░ рдХреЗрд▓реЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рднрд╡рд┐рд╖реНрдп.
- рдХреНрд░реЗрдЯ рд╡рд╛рдЯрдк.
Rust 1.36 рдиреБрд╕рд╛рд░, std рдЪреЗ рднрд╛рдЧ рдЬреЗ рдЬрд╛рдЧрддрд┐рдХ рд╡рд╛рдЯрдкрдХрд░реНрддреНрдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддрд╛рдд (рдЬрд╕реЗ рдХреА Vec ), рд╡рд╛рдЯрдк рдХреНрд░реЗрдЯрдордзреНрдпреЗ рдЖрд╣реЗрдд. рдЖрддрд╛ std рд╣реЗ рднрд╛рдЧ рдкреБрдиреНрд╣рд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрд▓. рдпрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ. - рдХрджрд╛рдЪрд┐рдд рдпреБрдирд┐рдЯ mem::uninitialized рдРрд╡рдЬреА.
рдорд╛рдЧреАрд▓ рдкреНрд░рдХрд╛рд╢рдирд╛рдВрдордзреНрдпреЗ, mem::uninitialized рдиреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рдЪреЗрдХ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджрд┐рд▓реА рд╣реЛрддреА, рддреЗ рдЖрд│рд╢реА рдЕреЕрд░реЗ рд╡рд╛рдЯрдкрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ, рдкрд░рдВрддреБ рд╣реЗ рдХрд╛рд░реНрдп рдЦреВрдкрдЪ рдзреЛрдХрд╛рджрд╛рдпрдХ рдЖрд╣реЗ (рдЕрдзрд┐рдХ), рддреНрдпрд╛рдореБрд│реЗ MaybeUninit рдкреНрд░рдХрд╛рд░ рд╕реНрдерд┐рд░ рдЭрд╛рд▓рд╛ , рдЬреЗ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реЗ.
рдмрд░рдВ, MaybeUninit рдкрд╛рд╕реВрди рд╣рд╛ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдкрд░реНрдпрд╛рдп рдЖрд╣реЗ, рддрд░ Rust 1.38 рдиреБрд╕рд╛рд░, mem::uninitialized рд╣реЗ рдирд╛рдкрд╕рдВрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЕрд╕реЗрд▓.
рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдирдирд┐рд╢рд┐рдЕрд▓ рдореЗрдорд░реАрдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА Alexis Beingessner рдЪреА рд╣реА рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рд╡рд╛рдЪреВ рд╢рдХрддрд╛. - рд░рд╕реНрдЯ 2015 рд╕рд╛рдареА NLL.
рдШреЛрд╖рдгрд╛ рдордзреНрдпреЗ рдЧрдВрдЬ 1.31.0 рдбреЗрд╡реНрд╣рд▓рдкрд░реНрд╕рдиреА рдЖрдореНрд╣рд╛рд▓рд╛ NLL (рдиреЙрди-рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо) рдмрджреНрджрд▓ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ, рднрд╛рд╖реЗрд╕рд╛рдареА рдПрдХ рд╕реБрдзрд╛рд░рдгрд╛ рдЬреА рдХрд░реНрдЬ рддрдкрд╛рд╕рдХрд╛рдВрдирд╛ рдЕрдзрд┐рдХ рд╣реБрд╢рд╛рд░ рдЖрдгрд┐ рдЕрдзрд┐рдХ рд╡рд╛рдкрд░рдХрд░реНрддрд╛-рдЕрдиреБрдХреВрд▓ рдмрдирд╡рддреЗ. рдЙрджрд╛рд╣рд░рдг:
fn main() {
mut x = 5 рджреНрдпрд╛;
y = &x;
z = &mut x; // рдпрд╛рдЪреА 1.31.0 рдкреВрд░реНрд╡реА рдкрд░рд╡рд╛рдирдЧреА рдирд╡реНрд╣рддреА.
}1.31.0 рдордзреНрдпреЗ, рд╡рд┐рдХрд╛рд╕рдХ рд░рд╕реНрдЯ 2018 рдордзреНрдпреЗ рд╕рдорд░реНрдерди рдЬреЛрдбрддреАрд▓ рдпрд╛ рд╡рдЪрдирд╛рд╕рд╣, NLL рдлрдХреНрдд рд░рд╕реНрдЯ 2015 рдордзреНрдпреЗ рдХрд╛рдо рдХреЗрд▓реЗ.
рддреБрдореНрд╣рд╛рд▓рд╛ NLL рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рдпрд╛рдордзреНрдпреЗ рдЕрдзрд┐рдХ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ рдмреНрд▓реЙрдЧ рдиреЛрдВрджреА (рдлреЗрд▓рд┐рдХреНрд╕ рдХреНрд▓реЛрдХреНрд╕). - рдХрд╛рд░реНрдЧреЛрд╕рд╛рдареА рдирд╡реАрди рдзреНрд╡рдЬ тАФрдСрдлрд▓рд╛рдЗрди рдЖрд╣реЗ.
рд░рд╕реНрдЯ 1.36 рдиреЗ рдХрд╛рд░реНрдЧреЛрд╕рд╛рдареА рдирд╡реАрди рдзреНрд╡рдЬ рд╕реНрдерд┐рд░ рдХреЗрд▓рд╛ рдЖрд╣реЗ. --offline рдзреНрд╡рдЬ рдХрд╛рд░реНрдЧреЛрд▓рд╛ рд╕реНрдерд╛рдирд┐рдХрд░рд┐рддреНрдпрд╛ рдХреЕрд╢реЗ рдХреЗрд▓реЗрд▓реЗ рдЕрд╡рд▓рдВрдмрди рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧрддреЗ рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рдирдВрддрд░ рдСрдлрд▓рд╛рдЗрди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рдЬреЗрд╡реНрд╣рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдСрдлрд▓рд╛рдЗрди рдЙрдкрд▓рдмреНрдз рдирд╕рддрд╛рдд рдЖрдгрд┐ рддрд░реАрд╣реА рдЗрдВрдЯрд░рдиреЗрдЯрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рдХрд╛рд░реНрдЧреЛ рдПрдХ рддреНрд░реБрдЯреА рджреЗрдИрд▓. рдЕрд╡рд▓рдВрдмрди рдкреВрд░реНрд╡-рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА cargo fetch рдХрдорд╛рдВрдб рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛, рдЬреЗ рд╕рд░реНрд╡ рдЕрд╡рд▓рдВрдмрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрд▓. - рддреЛ рдЖрд╣реЗ рддреБрдореНрд╣реА рдмрджрд▓рд╛рдВрдЪреЗ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди рд╡рд╛рдЪреВ рд╢рдХрддрд╛.
рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реАрдордзреНрдпреЗ рджреЗрдЦреАрд▓ рдмрджрд▓ рдЖрд╣реЗрдд:
- dbg!() рдореЕрдХреНрд░реЛ рдЖрддрд╛ рдПрдХрд╛рдзрд┐рдХ рд╡рд┐рддрд░реНрдХ рдШреЗрдК рд╢рдХрддреЗ.
- рдЕрдиреЗрдХ APIs рдЖрддрд╛ const рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдЖрд╣реЗрдд:
- рдирд╡реАрди API рдЬреЗ рд╕реНрдерд┐рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд:
- рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реАрддреАрд▓ рдЗрддрд░ рдмрджрд▓ рдпреЗрдереЗ рдЖрдврд│реВ рд╢рдХрддрд╛рдд рдпреЗрдереЗ.
рдЗрддрд░ рдмрджрд▓ рдЧрдВрдЬ, рдорд╛рд▓рд╡рд╛рд╣реВ ╨╕ рдХреНрд▓рд┐рдкреНрдкреА.
рд╕реНрддреНрд░реЛрдд: linux.org.ru