рд░рд╕реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ 1.38 рд░рд┐рд▓реАрдЬ

рдкреНрд░рдХрд╛рд╢рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ рд░рд┐рд▓реАрдЬ рд░рд╕реНрдЯ рез, рдореЛрдЬрд┐рд▓рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдкрд┐рддред рднрд╛рд╖рд╛ рдореЗрдореЛрд░реА рд╕реБрд░рдХреНрд╖рд╛рдорд╛ рдХреЗрдиреНрджреНрд░рд┐рдд рдЫ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЗрдореЛрд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рд░ рдлреЛрд╣реЛрд░ рд╕рдЩреНрдХрд▓рди рд╡рд╛ рд░рдирдЯрд╛рдЗрдо рдкреНрд░рдпреЛрдЧ рдирдЧрд░реА рдЙрдЪреНрдЪ рдХрд╛рд░реНрдп рд╕рдорд╛рдирд╛рдиреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдорд╛рдзреНрдпрдо рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

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

рдореБрдЦреНрдп рдирд╡рд╛рдЪрд╛рд░рд╣рд░реВ:

  • рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдХрдореНрдкрд╛рдЗрд▓реЗрд╢рди рдореЛрдб (рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ) рдердкрд┐рдпреЛ, рдЬрд╕рдорд╛ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЙрдкрд▓рдмреНрдз рд╣реБрдиреЗ рдмрд┐рддреНрддрд┐рдХреИ рдирд┐рд░реНрднрд░ рдХреНрд░реЗрдЯ рдкреНрдпрд╛рдХреЗрдЬрдХреЛ рдирд┐рд░реНрдорд╛рдг рд╕реБрд░реБ рд╣реБрдиреНрдЫ, рдпрд╕рдХреЛ рд╕рдВрдХрд▓рди рдкреВрд░рд╛ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддреАрдХреНрд╖рд╛ рдирдЧрд░реАред рдкреНрдпрд╛рдХреЗрдЬ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрджрд╛, рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рднреЗрд▓рд╛ рд╣реБрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди, рдХреЗрд╡рд▓ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджреИ, рдЬрд╕рдорд╛ рдкреНрд░рдХрд╛рд░рд╣рд░реВ, рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ, рд░ рдирд┐рд░реНрдпрд╛рдд рдЧрд░рд┐рдПрдХрд╛ рддрддреНрд╡рд╣рд░реВрдХреЛ рд╕реВрдЪреА рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреНрдЫред рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд░реВрдкрдорд╛ рдЙрдкрд▓рдмреНрдз рдЧрд░рд╛рдЗрдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рд▓рд┐рдЩреНрдХ рдЧрд░рд┐рдПрдХрд╛ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рдЕрдм рдзреЗрд░реИ рдкрд╣рд┐рд▓реЗ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдПрдХрд▓ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджрд╛, рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдореЛрдбрд▓реЗ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрджреИрди, рддрд░ рдпрджрд┐ рдирд┐рд░реНрдорд╛рдгрд▓реЗ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрд▓рд╛рдИ рд╢рд╛рдЦрд╛рдпреБрдХреНрдд рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рднрдиреЗ, рд╕рдордЧреНрд░ рдирд┐рд░реНрдорд╛рдг рд╕рдордп 10-20% рд▓реЗ рдШрдЯрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫред
  • рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдЧрд▓рдд рдкреНрд░рдпреЛрдЧрдХреЛ рдкрд╣рд┐рдЪрд╛рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрджрдЫ std::mem::uninitialized ╨╕ std::mem::zeroedред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, std::mem::uninitialized рдЪрд╛рдБрдбреИ arrays рдмрдирд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫ, рддрд░ рдпрд╕рд▓реЗ рдХрдореНрдкрд╛рдЗрд▓рд░рд▓рд╛рдИ рдмрд╣рдХрд╛рдЙрдБрдЫ рдХрд┐рдирднрдиреЗ рдпреЛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд░реВрдкрдорд╛ рджреЗрдЦрд┐рдиреНрдЫ, рддрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛рдорд╛ рдорд╛рди рдЕрдирдЗрдирд┐рд╢рд┐рдпрд▓ рд░рд╣рдиреНрдЫред mem::uninitialized рдкреНрд░рдХрд╛рд░реНрдп рдкрд╣рд┐рд▓реЗ рдиреИ рдмрд╣рд┐рд╖реНрдХреГрдд рднрдиреА рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдПрдХреЛ рдЫ рд░ рдпрд╕рдХреЛ рд╕рдЯреНрдЯрд╛рдорд╛ рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рдХрд╛рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░рд┐рдиреНрдЫред рд╣реБрдирд╕рдХреНрдЫ рдпреБрдирд┐рдЯред mem::zeroed рдХреЛ рд▓рд╛рдЧрд┐, рдпреЛ рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ рд╢реВрдиреНрдп рдорд╛рдирд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рдирд╕рдХреНрдиреЗ рдкреНрд░рдХрд╛рд░рд╣рд░реВрдорд╛ рд╕рдорд╕реНрдпрд╛ рд▓реНрдпрд╛рдЙрди рд╕рдХреНрдЫред

    рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рдорджреНрджрддрдХреЛ рд▓рд╛рдЧрд┐, рдирдпрд╛рдБ рд░рд┐рд▓реАрдЬрд▓реЗ рдХрдореНрдкрд╛рдЗрд▓рд░рдорд╛ рд▓рд┐рдиреНрдЯ рдЬрд╛рдБрдЪ рдердкреНрдЫ рдЬрд╕рд▓реЗ mem::uninitialized рд╡рд╛ mem::zeroed рд╕рдБрдЧ рдХреЗрд╣реА рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдБрджрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдЕрдм рдореЗрдо::рдЕрдирд┐рдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬреНрдб рд╡рд╛ рдореЗрдо::рд╢реВрдиреНрдп рдкреНрд░рдХрд╛рд░рд╣рд░реВ &T рд░ BoxтА╣TтА║ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджрд╛ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрднрдпреЛ, рдЬрд╕рд▓реЗ рд╢реВрдиреНрдп рдорд╛рдирд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рдирд╕рдХреНрдиреЗ рд╕реВрдЪрдХ рд╡рд╕реНрддреБрд╣рд░реВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрджрдЫ;

  • рдХреНрд░реЗрдЯ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрд▓рд╛рдИ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрди рд░ рднрд╡рд┐рд╖реНрдпрдорд╛ рдореЗрдЯрд╛рдЙрдиреЗ рд╕рдордпрддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ "#[рдмрдиреНрджрд┐рдд]" рд╡рд┐рд╢реЗрд╖рддрд╛рд▓рд╛рдИ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫред Rust 1.38 рдХреЛ рд░реВрдкрдорд╛, рдпреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореНрдпрд╛рдХреНрд░реЛрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ;
  • submodules рдорд╛ "#[global_allocator]" рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдердкрд┐рдпреЛ;
  • рдердкрд┐рдПрдХреЛ рдкреНрд░рдХрд╛рд░реНрдп std::any::type_name, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░рдХрд╛рд░рдХреЛ рдирд╛рдо рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рдЬреБрди рдбрд┐рдмрдЧрд┐рдЩ рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреЛрдЧреА рд╣реБрди рд╕рдХреНрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рдордпрдорд╛ рддрдкрд╛рдЗрдБ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкреНрд░рдХрд╛рд░ рдХреЛ рд▓рд╛рдЧреА рдлреЛрди рдХреЛ рд▓рд╛рдЧреА рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

    fn gen_valueтА╣T: рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд>() -> T {
    println!("{} рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рд░рдореНрдн рдЧрд░реНрджреИ", std::any::type_name::тА╣TтА║());
    рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд::рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд()
    }

    fn main() {
    let _: i32 = gen_value(); # "i32" рдЫрд╛рдкрд┐рдиреЗрдЫ
    let _: string = gen_value(); # рдкреНрд░рд┐рдиреНрдЯ рд╣реБрдиреЗрдЫ "alloc::string::String"
    }

  • рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрд╣рд░реВ:
    • slice::{concat, connect, join} рд▓реЗ рдЕрдм рдорд╛рди &[T] рд▓рд┐рди рд╕рдХреНрдЫ &T;
    • "*const T" рд░ "* mut T" рдЕрдм рдорд╛рд░реНрдХрд░ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реН::рдЕрдирдкрд┐рди;
    • "ArcтА╣[T]тА║" рд░ "RcтА╣[T]тА║" рдЕрдм FromIteratorтА╣TтА║ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
    • iter::{StepBy, Peekable, Take} рдЕрдм DoubleEndedIterator рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
    • ascii::EscapeDefault рдХреНрд▓реЛрди рд░ рдбрд┐рд╕реНрдкреНрд▓реЗ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫред
  • рдПрдкреАрдЖрдИрд╣рд░реВрдХреЛ рдирдпрд╛рдБ рднрд╛рдЧрд▓рд╛рдИ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧрдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ, рд╕реНрдереАрд░ рдЧрд░рд┐рдПрдХрд╛ рд╡рд┐рдзрд┐рд╣рд░реВ рд╕рд╣рд┐рдд
    • тА╣*const TтА║::cast, тА╣*mut TтА║::cast,
    • рдЕрд╡рдзрд┐::as_secs_f{32|64},
    • рдЕрд╡рдзрд┐::div_duration_f{32|64},
    • рдЕрд╡рдзрд┐::div_f{32|64},
    • рдЕрд╡рдзрд┐::from_secs_f{32|64},
    • рдЕрд╡рдзрд┐::mul_f{32|64},
    • рдмрд╛рдБрдХреАрд╕рдБрдЧ рд╡рд┐рднрд╛рдЬрди рдХрд╛рд░реНрдпрд╣рд░реВ
      div_euclid рд░ rem_euclid рд╕рдмреИ рдкреВрд░реНрдгрд╛рдВрдХ рдЖрджрд┐рдХрд╛ рд▓рд╛рдЧрд┐;

  • рдХрд╛рд░реНрдЧреЛ рдкреНрдпрд╛рдХреЗрдЬ рдкреНрд░рдмрдиреНрдзрдХрдорд╛ рд╡рд┐рднрд┐рдиреНрди рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд╕рдХреНрд╖рдо рдЧрд░реНрди "--рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ" рд╡рд┐рдХрд▓реНрдк рдзреЗрд░реИ рдкрдЯрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдорд░реНрдерди рдердкрд┐рдпреЛ;
  • рдХрдореНрдкрд╛рдЗрд▓рд░рд▓реЗ рддреЗрд╕реНрд░реЛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рдЧреНрд░реЗрдб рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдорд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc рд▓рдХреНрд╖реНрдпрд╣рд░реВ, armlinux7 рдЬреНрдЮрд╛рдд -gnueabi, armv7-unknown-linux-musleabi, hexagon-unknown-linux-musl рд░ riscv32i-unknown-none-elfред рддреЗрд╕реНрд░реЛ рддрд╣рдорд╛ рдЖрдзрд╛рд░рднреВрдд рд╕рдорд░реНрдерди рд╕рдорд╛рд╡реЗрд╢ рдЫ, рддрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдирд┐рд░реНрдорд╛рдгрд╣рд░реВрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рд░ рдкреНрд░рдХрд╛рд╢рди рдмрд┐рдирд╛ред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди