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

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


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


$ rustup update stable 

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


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


рд╡реИрд╢реНрд╡рд┐рдХ рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛


рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд░рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд░рди рдЯрд╛рдЗрдо рдкрд░ рдореЗрдореЛрд░реА рдорд┐рд▓рддреА рд╣реИред рдкрд╣рд▓реЗ, рд░рд╕реНрдЯ рдиреЗ рд╕реНрдореГрддрд┐ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдереА, рдЬрд┐рд╕рдиреЗ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛ рдерд╛ред рдХреБрдЫ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░, рдЬреЗрдорд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рджреВрд╕рд░реЛрдВ рдкрд░ - рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдереЗред 1.28.0 рд░рд┐рд▓реАрдЬ рдореЗрдВ, #[global_allocator] рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕реНрдерд┐рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ Rust рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдПрд▓реЛрдХреЗрдЯрд░ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА GlobalAlloc рд▓рд╛рдЧреВ рдХрд░рддреЗ GlobalAlloc рдирдП рдПрд▓реЛрдХреЗрдЯрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред


рдХреБрдЫ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд░рд╕реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдбрд┐рдлреЙрд▓реНрдЯ рдПрд▓реЛрдХреЗрдЯрд░ рдЬреЗрдорд▓реЙрдХ рд╣реИред рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдм рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдПрд▓реЛрдХреЗрдЯрд░ рд╣реИрдВрдбрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдПрд▓реЛрдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, #[global_allocator] рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдереИрддрд┐рдХ рдШреЛрд╖рдгрд╛ рджреНрд╡рд╛рд░рд╛ред


 use std::alloc::System; #[global_allocator] static GLOBAL: System = System; fn main() { let mut v = Vec::new(); //     . v.push(1); } 

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рднреА GlobalAlloc рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реИред рдЖрдк рдЗрд╕реЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред


рдмреЗрд╣рддрд░ рдкреНрд░рд╛рд░реВрдк рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢


рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдореЗрдВ рд╕реБрдзрд╛рд░ рдкрд░ рдХрд╛рдо рдЬрд╛рд░реА рд╣реИ, рдЗрд╕ рдмрд╛рд░ рдкреНрд░рд╛рд░реВрдкрдг рдкрд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд╕рд╛рде:


 format!("{_foo}", _foo = 6usize); 

рдкрд╣рд▓реЗ, рдЗрд╕ рд╕реНрдерд╛рди рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЕрд▓реНрдк рдерд╛:


 error: invalid format string: expected `'}'`, found `'_'` | 2 | format!("{_foo}", _foo = 6usize); | ^^^^^^^^ 

рдЕрдм рдПрдХ рдирдпрд╛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░рдг рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрдорд╛рдиреНрдп рд╣реИ:


 error: invalid format string: invalid argument name `_foo` | 2 | let _ = format!("{_foo}", _foo = 6usize); | ^^^^ invalid argument name in format string | = note: argument names cannot start with an underscore 

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


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


рдкрд╣рд▓реЗ рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдП рдЧрдП GlobalAlloc рд╕реНрдерд┐рд░реАрдХрд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ NonZero рдирдВрдмрд░ рдкреНрд░рдХрд╛рд░ рд╕реНрдерд┐рд░ рд╣реИрдВред рдпреЗ рдорд╛рдирдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд░реИрдкрд░ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ: NonZeroU8 , NonZeroU16 , NonZeroU32 , NonZeroU64 , NonZeroU128 рдФрд░ NonZeroUsize ред


рд╡реЗ рдЖрдкрдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Option<u8> рджреЛ рдмрд╛рдЗрдЯреНрд╕ рд▓реЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ Option<NonZeroU8> рдПрдХ Option<NonZeroU8> рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдЕрдиреБрдХреВрд▓рди рддрдм рднреА рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ рдЬрдм NonZeroU8 рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдВрджрд░ рд▓рдкреЗрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ Door рдЕрднреА рднреА рдПрдХ рдмрд╛рдЗрдЯ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддрд╛ рд╣реИ, рддрдм рднреА рдЬрдм рдЗрд╕реЗ Option рдЕрдВрджрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрдХреВрд▓рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрдгрдирд╛рдУрдВ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ; Option рдпрд╣рд╛рдВ рд╡рд┐рд╢реЗрд╖ рдирд╣реАрдВ рд╣реИред


 use std::mem; use std::num::NonZeroU8; struct Key(NonZeroU8); struct Door { key: Key, } fn main() { assert_eq!(mem::size_of::<Door>(), 1); assert_eq!(mem::size_of::<Option<Door>>(), 1); } 

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


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


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


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


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


рдПрдХ рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдореИрдВ рдмрд░реНрдмрд╛рдж рд╕рдореБрджрд╛рдп рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдкреНрд░реВрдлрд░реАрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЙрдирдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЖрднрд╛рд░ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реВрдВ

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


All Articles