рдЬрдВрдЧ 1.37.0 рд░рд┐рд▓реАрдЬ: рдкреНрд░реЛрдлрд╛рдЗрд▓-рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЕрдиреБрдХреВрд▓рди, рдЕрдирд╛рдо рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рдХрд╛рд░реНрдЧреЛ рд╡рд┐рдХреНрд░реЗрддрд╛

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


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


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


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


$ rustup update stable 

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


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


рдЬрдВрдЧ 1.37.0 рдореЗрдВ рдкреНрд░рдореБрдЦ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЙрдкрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдХрд▓реНрдк, рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд cargo vendor , рдЕрдирд╛рдо рд╕реНрдерд┐рд░рд╛рдВрдХ, рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓-рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЕрдиреБрдХреВрд▓рди, рдХрд╛рд░реНрдЧреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП default-run рдХреБрдВрдЬреА рдФрд░ #[repr(align(N))] рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдПред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯ рджреЗрдЦреЗрдВред


рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдХрд▓реНрдк enum рд▓рд┐рдП рд▓рд┐рдВрдХ


рдЬрдВрдЧ 1.37.0 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛, рдПрдирд┐рдпрдо рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рдПрд▓рд┐рдпрд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрднрд╡ рд╣реИ:


 type ByteOption = Option<u8>; fn increment_or_zero(x: ByteOption) -> u8 { match x { ByteOption::Some(y) => y + 1, ByteOption::None => 0, } } 

impl рдмреНрд▓реЙрдХ рдореЗрдВ Self рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдВрдЧ 1.37.0 рдореЗрдВ Self::Variant рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЧрдгрдирд╛ рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛:


 impl Coin { fn value_in_cents(&self) -> u8 { match self { Self::Penny => 1, Self::Nickel => 5, Self::Dime => 10, Self::Quarter => 25, } } } 

рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЕрдм рдЬрдВрдЧ рдЖрдкрдХреЛ "рдЯрд╛рдЗрдк-рд░рд┐рд▓реЗрдЯрд┐рд╡ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди" , <MyType<..>>::Variant рдорд╛рдзреНрдпрдо рд╕реЗ рдЧрдгрдирд╛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реНрдерд┐рд░реАрдХрд░рдг рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдЙрдкрд▓рдмреНрдз рд╣реИред


рд╡реЗрдВрдбрд░ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд┐рд╡ рдХрд╛рд░реНрдЧреЛ рд╕рдкреЛрд░реНрдЯ


рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рдж, cargo vendor рдЯреАрдо рдЕрдм рдХрд╛рд░реНрдЧреЛ рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реИред рдпрд╣ рдХрдорд╛рдВрдб рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ vendor/ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди рд╡реЗрдВрдбрд░ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред


cargo vendor рдкрд╣рд▓реЗ cargo vendor рд╣реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: rustc рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯрд╛рд░рдмреЙрд▓ рд░рд┐рд▓реАрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореЛрдиреЛ-рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреА рд╣реИрдВред


рдореИрдХреНрд░реЛрдЬрд╝ рдореЗрдВ рдЕрдирд╛рдо рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЕрдм рдЖрдк рдЗрд╕рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ ( _ ) рд╕реЗ рдмрджрд▓рдХрд░ рдПрдХ (unnamed) (const ) рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, rustc рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ rustc рд╣рдореЗрдВ рдпрд╣ рдХреЛрдб рдорд┐рд▓рд╛:


 ///   ,    ///  ,   -  . #[macro_export] macro_rules! static_assert_size { ($ty:ty, $size:expr) => { const _: [(); $size] = [(); ::std::mem::size_of::<$ty>()]; // ^    . } } static_assert_size!(Option<Box<String>>, 8); // 1. static_assert_size!(usize, 8); // 2. 

рджреВрд╕рд░реЗ static_assert_size!(..) : рдЕрдирд╛рдо рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдирдП рддрддреНрд╡реЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп рдирд╛рдо рд╕рдВрдШрд░реНрд╖ рдХреЛ рд░реЛрдХрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ static_assert_size!(MY_DUMMY_IDENTIFIER, usize, 8); рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ static_assert_size!(MY_DUMMY_IDENTIFIER, usize, 8); ред рдЕрдирд╛рдо рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рд╢реБрд░реВрдЖрдд рдХреЗ рд╕рд╛рде, рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рдФрд░ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШреЛрд╖рдгрд╛ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдореИрдХреНрд░реЛ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред


рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓-рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЕрдиреБрдХреВрд▓рди


рдкреНрд░реЛрдлрд╛рдЗрд▓-рдЧрд╛рдЗрдбреЗрдб рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди (PGO) рдЕрдм rustc рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬрд┐рд╕реЗ -C profile-generate рдФрд░ -C profile-use rustc рдХрдВрдкрд╛рдЗрд▓рд░ rustc рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдкреНрд░реЛрдлрд╛рдЗрд▓-рдЧрд╛рдЗрдбреЗрдб рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЗ рдмрдЬрд╛рдп рдЯреЗрд╕реНрдЯ рд░рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреА рд╣реИред рдпрд╣ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:


  1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ rustc рдлреНрд▓реИрдЧ -C profile-generate рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдЯреВрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдбреЗрдЯрд╛ рд╕реИрдВрдкрд▓ рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдмрд╛рдж рдореЗрдВ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдбреЗрдЯрд╛ рд▓рд┐рдЦ тАЛтАЛрджреЗрдЧрд╛ред
  2. рдкреНрд░реЛрдЧреНрд░рд╛рдо рдлрд┐рд░ rustc , рдЗрд╕ рдмрд╛рд░-рдПрдХрддреНрд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -C profile-use рдзреНрд╡рдЬ рдХрд╛ -C profile-use рдХрд░ rustc рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЕрд╕реЗрдВрдмрд▓реА рдПрдХрддреНрд░рд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХреЛрдб рдкреНрд▓реЗрд╕рдореЗрдВрдЯ, рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдФрд░ рдЕрдиреНрдп рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЗрд╣рддрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдЧреАред

рдкреНрд░реЛрдлрд╛рдЗрд▓-рдЧрд╛рдЗрдбреЗрдб рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЬрдВрдЧрдд рдХрдВрдкрд╛рдЗрд▓рд░ рдмреБрдХ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдзреНрдпрд╛рдп рджреЗрдЦреЗрдВред


рдХрд╛рд░реНрдЧреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛


cargo run рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рддреНрд╡рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рд╣реИред рдЬрдм рдХрдИ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдЖрдк --bin рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ cargo run рдХреЛ рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЪрд╛рд╣реЗрдВрдЧреЗ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛ рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред


рд░рд╕реНрдЯ 1.37.0 Cargo.toml (рдЕрдиреБрднрд╛рдЧ [package] ) рдореЗрдВ рдПрдХ рдирдИ default-run рдХреБрдВрдЬреА рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ --bin рдЭрдВрдбрд╛ рдирд╣реАрдВ --bin , рддреЛ рдХрд╛рд░реНрдЧреЛ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдШреЛрд╖рд┐рдд рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧрд╛ред


#[repr(align(N))]


рд░реВрд╕реНрдЯ 1.37.0 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рд╡рд┐рд╢реЗрд╖рддрд╛ #[repr(align(N))] рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдореГрддрд┐ рдореЗрдВ рдЧрдгрдирд╛ рдХреЗ рд╕рдВрд░реЗрдЦрдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдкрд╣рд▓реЗ рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗрд╡рд▓ рд╕рдВрд░рдЪрдирд╛рдУрдВ ( struct ) рдФрд░ рдпреВрдирд┐рдпрдиреЛрдВ ( union ) рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рдереА)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ Align16 рдЧрдгрди, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ, 16 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рд╕рдВрд░реЗрдЦрдг рд╣реИ, рдЬрдмрдХрд┐ рдмрд┐рдирд╛ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕рдВрд░реЗрдЦрдг #[repr(align(16))] 4 рд╣реЛрдЧрд╛:


 #[repr(align(16))] enum Align16 { Foo { foo: u32 }, Bar { bar: u32 }, } 

рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП #[repr(align(N)) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╢рдмреНрджрд╛рд░реНрде рдЗрд╕ рд╕рдВрд░реЗрдЦрдг рдХреЗ рд╕рд╛рде рдПрдХ AlignN<T> рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ AlignN<MyEnum> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ AlignN<MyEnum> :


 #[repr(align(N))] struct AlignN<T>(T); 

рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди


рд░реВрд╕реНрдЯ 1.37.0 рдиреЗ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдШрдЯрдХреЛрдВ рдХреЛ рд╕реНрдерд┐рд░ рдХрд┐рдпрд╛:



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


рд╕рд┐рдВрдЯреИрдХреНрд╕ , рдХрд╛рд░реНрдЧреЛ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░, рдФрд░ рдХреНрд▓рд┐рдкреНрдкреА рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рднреА рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рдЧреБрдЬрд░реЗ рд╣реИрдВред


рд╕рджрд╕реНрдп 1.37.0


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


рдирдИ рдЬрдВрдЧ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдкреНрд░рд╛рдпреЛрдЬрдХ


рд╣рдо рджреЛ рдирдП Rust рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдкреНрд░рд╛рдпреЛрдЬрдХреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ Rust 1.37.0: Amazon Web Services (AWS) рдФрд░ Microsoft Azure рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рджрд╛рди рдХрд┐рдП рд╣реИрдВ:


  • AWS рдиреЗ рдЬрд╛рд░реА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ (рд╕рдВрдХрд▓рдХ, рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдЙрдкрдХрд░рдг рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб) рдХреЗ рд▓рд┐рдП рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХреА, CloudFront рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХреА, рдХреНрд░реЗрдЯрд░ рд╕реЗ EC2 рдкреНрд░рддрд┐рдЧрдорди рдХреЛ рд░реЛрдХрд╛, рдФрд░ AWS рджреНрд╡рд╛рд░рд╛ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдПрдХ рдФрд░ рдЬрдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛ред
  • рдЬрдВрдЧ-рд▓рдВрдЧ / рдЬрдВрдЧ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдЕрддреНрдпрдзрд┐рдХ рдорд╛рдВрдЧ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдЕрдЬрд╝реВрд░ рдиреЗ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ред

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


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


рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рд╕рдВрдпреБрдХреНрдд рд░реВрдк рд╕реЗ andvvlex , ozkriff , funkill рдФрд░ Gymmasssorla рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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


All Articles