Rust: [рд╕реНрдерд┐рд░реАрдХрд░рдг] async/рдкреНрд░рддреАрдХреНрд╖рд╛ MVP

рдХреЛ рдирд┐рд░реНрдорд┐рдд 26 рдЬреВрди 2019  ┬╖  58рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: rust-lang/rust

рд╕реНрдерд┐рд░реАрдХрд░рдг рд▓рдХреНрд╖реНрдп: 1.38.0 (рдмреАрдЯрд╛ рдХрдЯ 2019-08-15)

рдХрд╛рд░реНрдпрдХрд╛рд░реА рд╕рд╛рд░рд╛рдВрд╢

рдпрд╣ рдПрдХ рдиреНрдпреВрдирддрдо рд╡реНрдпрд╡рд╣рд╛рд░реНрдп async/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдмреНрд▓реЙрдХреЛрдВ рдкрд░ async рдПрдиреЛрдЯреЗрд╢рди, рдЬрд┐рд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдореВрд▓реНрдпрд╛рдВрдХрди рдореЗрдВ рджреЗрд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рднрд╡рд┐рд╖реНрдп рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдПрдХ await рдСрдкрд░реЗрдЯрд░, рдЬреЛ рдХреЗрд╡рд▓ async рд╕рдВрджрд░реНрдн рдореЗрдВ рдорд╛рдиреНрдп рд╣реИ, рдЬреЛ рднрд╡рд┐рд╖реНрдп рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдмрд╛рд╣рд░реА рднрд╡рд┐рд╖реНрдп рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдкреВрд░реА рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рд╕рдВрдмрдВрдзрд┐рдд рдкрд┐рдЫрд▓реА рдЪрд░реНрдЪрд╛

рдЖрд░рдПрдлрд╕реА:

рдЯреНрд░реИрдХрд┐рдВрдЧ рдореБрджреНрджреЗ:

рд╕реНрдерд┐рд░реАрдХрд░рдг:

рдкрд╣реБрдВрдЪреЗ рдкреНрд░рдореБрдЦ рдлреИрд╕рд▓реЗ

  • рднрд╡рд┐рд╖реНрдп рдЬреЛ рдПрдХ async рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ, рдЙрд╕рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЙрдкрдЬ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдИ рднреА рдмреЙрдбреА рдХреЛрдб рдирд╣реАрдВ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИред
  • рдПрд╕рд┐рдВрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ "рдмрд╛рд╣рд░реА" рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ (рднрд╡рд┐рд╖реНрдп рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ) рдХреЗ рдмрдЬрд╛рдп "рдЖрдВрддрд░рд┐рдХ" рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ (рд╡рд╣ рдкреНрд░рдХрд╛рд░ рдЬреЛ рдЖрдВрддрд░рд┐рдХ return рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
  • рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ "рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ рдбреЙрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕," expression.await , рдЬреИрд╕рд╛ рдХрд┐ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп await expression рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рд░реНрдп рдЕрд╡рд░реБрджреНрдз рд╕реНрдерд┐рд░реАрдХрд░рдг

  • [x] async fns рдХрдИ рдЬрдиреНрдореЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП #релремреирейрео
  • [x] рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЖрдХрд╛рд░ рддреЗрдЬреА рд╕реЗ рдирд╣реАрдВ рдмрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП #релреирепреирек
  • [ ] async/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг
  • [ ] рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдХрд▓рдХ рдкрд░реАрдХреНрд╖рдг

рднрд╡рд┐рд╖реНрдп рдХрд╛ рдХрд╛рд░реНрдп

  • Async/No-std рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ: async рдФрд░ await рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TLS рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрдерд┐рд░реАрдХрд░рдг рдХреЛ рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕реЗ рдЕрдВрддрддрдГ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред
  • рдЙрдЪреНрдЪ рдХреНрд░рдо async рдлрд╝рдВрдХреНрд╢рди: async рдХреНрд▓реЛрдЬрд░ рд▓рд┐рдЯрд░рд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣рд╛рдБ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИред рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рд╕рд╛рде рдПрд╕рд┐рдВрдХреНрд╕ рдХреНрд▓реЛрдЬрд░ рдкрд░ рдХреИрдкреНрдЪрд░ рдФрд░ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдзрд┐рдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛рд░реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  • Async рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд┐рдзрд┐рдпрд╛рдБ: рдЗрд╕рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рд╡рд╛рдВрдЫрдиреАрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред
  • рд╕реНрдЯреНрд░реАрдо рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ: рдлреНрдпреВрдЪрд░ рд▓рд╛рдпрдмреНрд░реЗрд░реА рдореЗрдВ рдлреНрдпреВрдЪрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝реА рд╕реНрдЯреНрд░реАрдо рд╡рд┐рд╢реЗрд╖рддрд╛, рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЗрдЯрд░реЗрдЯрд░ рд╣реИред рдПрд╕рдЯреАрдбреА рдФрд░ рднрд╛рд╖рд╛ рдореЗрдВ рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдПрдХ рд╡рд╛рдВрдЫрдиреАрдп рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред
  • рдЬрдирд░реЗрдЯрд░ рдЕрднреНрдпрд╛рд╡реЗрджрди рдХрд╛ рдЕрдиреБрдХреВрд▓рди: рдЬрдирд░реЗрдЯрд░ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкреВрд░реНрдг рдЖрдХрд╛рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдордиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдЕрдиреБрдХреВрд▓рди рдореБрджреНрджрд╛ рд╣реИ рдФрд░ рд╢рдмреНрджрд╛рд░реНрде рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред

рдкреГрд╖реНрдарднреВрдорд┐

рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз IO рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЙрддреНрдкрд╛рджрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реБрдЪрд┐ рдХреЗ рд╕рд╛рде рдЬрдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдХреНрд╖реНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдЖрдИрдУ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЬрдВрдЧ рдХрд╛ рд▓рдХреНрд╖реНрдп рд░рд╣рд╛ рд╣реИред рдПрд╕рд┐рдВрдХреНрд╕/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдЙрд╕ рдкреНрд░рдпрд╛рд╕ рдХреА рдкрд░рд┐рдгрддрд┐ рд╣реИред

1.0 рд╕реЗ рдкрд╣рд▓реЗ, рд░рд╕реНрдЯ рдореЗрдВ рдПрдХ рдЧреНрд░реАрдирдереНрд░реЗрдбрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдерд╛, рдЬрд┐рд╕рдореЗрдВ рд░рд╕реНрдЯ рдиреЗ рдиреЙрди-рдмреНрд▓реЙрдХрд┐рдВрдЧ IO рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдирд┐рд░реНрдорд┐рдд рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ, рднрд╛рд╖рд╛-рд╕реНрддрд░реАрдп рдереНрд░реЗрдбрд┐рдВрдЧ рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдиреЗ рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХреАрдВ: рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рднрд╛рд╖рд╛ рд░рдирдЯрд╛рдЗрдо рд╢реБрд░реВ рдХрд░рдирд╛ рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдПрдлрдПрдлрдЖрдИ рдХреЗ рдКрдкрд░реА рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЧреНрд░реАрдирдереНрд░реЗрдб рд╕реНрдЯреИрдХреНрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдХрдИ рдкреНрд░рдореБрдЦ рдЕрдирд╕реБрд▓рдЭреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред .

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

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

  • рдЗрд╕рдиреЗ рд░рд╕реНрдЯрдХ рдХреЛ рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдлреНрдпреВрдЪрд░реНрд╕ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдЖрдХрд╛рд░ рдФрд░ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рджреЛрдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдХрдо рдореЗрдореЛрд░реА рдУрд╡рд░рд╣реЗрдб рдерд╛ред рдХреЙрд▓рдмреИрдХ рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдЗрд╕рдХрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рд╣реИред
  • рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрдХ рдФрд░ рд░рд┐рдПрдХреНрдЯрд░ рдЬреИрд╕реЗ рдШрдЯрдХреЛрдВ рдХреЛ рднрд╛рд╖рд╛ рд░рдирдЯрд╛рдЗрдо рдХреЗ рдПрдХ рднрд╛рдЧ рдХреЗ рдмрдЬрд╛рдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдкреАрдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд░рд╣рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЙрди рд╡реИрд╢реНрд╡рд┐рдХ рд▓рд╛рдЧрддреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рднрд╛рд╖рд╛ рд╕реНрддрд░ рдкрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдмреНрд▓реИрдХрдмреЙрдХреНрд╕ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрдирдХреЗ рд░рдирдЯрд╛рдЗрдо рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШрдЯрдХреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  • рдпрд╣ рдПрд╕рд┐рдВрдХреНрд╕ рдФрд░ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднрд╛рд╖рд╛ рдореЗрдВ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдХреЛ рдмреЗрдХ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рднреА рд╕рдорд╡рд░реНрддреА рдЖрджрд┐рдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рднреА рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реНрд░реЛрдд рдкрд╛рда рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдЕрдзрд┐рдХ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╣рдЪрд╛рди рдпреЛрдЧреНрдп рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдЖрджрд┐рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдпрд╣ рдУрд╡рд░рд╣реЗрдб рдХреЗ рдмрд┐рдирд╛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╡рд╛рдпрджрд╛ рдХреЛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рднреА рд╡рд╛рдпрджрд╛ рдХреЛ рдореБрдлреНрдд рдореЗрдВ рд░рджреНрдж рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрдХреЛрдВ рдФрд░ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдЖрджрд┐рдо рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдХреЛрдб рд╕реНрдкрд╖реНрдЯрддрд╛ рд▓рд╛рдн рд╣реЛрддреЗ рд╣реИрдВред

(рдЕрдВрддрд┐рдо рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреНрд░рдо рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдкрд╣рдЪрд╛рдирд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рд╕рддреНрдп рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЙрди рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд╛рдПрдВ рд▓рд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпреЗ рдЧреБрдг рджреЛрдиреЛрдВ рдорддрджрд╛рди-рдЖрдзрд╛рд░рд┐рдд рдореЙрдбрд▓ рдХреЗ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рдЧреБрдг рд╣реИрдВред рдЬрд┐рд╕рдХреЗ рдЕрдиреНрдп рд╕реНрдкрд╖реНрдЯ рд▓рд╛рдн рд╣реИрдВ рдФрд░, рд╣рдорд╛рд░реА рд░рд╛рдп рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрдиреНрд╣реЗрдВ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рдж рд▓рд╛рднрдХрд╛рд░реА рдЧреБрдг рд╣реИрдВред)

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреЛрд▓-рдЖрдзрд╛рд░рд┐рдд рдореЙрдбрд▓ рдХреЛ рдЧрдВрднреАрд░ рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдЬрдм рдЙрд╕рдиреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА; рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдЙрдкрдЬ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдиреЗ рдЕрдирд╕реБрд▓рдЭреЗ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛, рднрд▓реЗ рд╣реА рд╡реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдВред рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЖрд░реНрдХреНрд╕, рдореНрдпреВрдЯреЗрдХреНрд╕ рдФрд░ рдореВрд╡ рдХреНрд▓реЛрдЬрд░ рд╕реЗ рднрд░рд╛ рдЬрдЯрд┐рд▓, рд╢реЛрд░ рдХреЛрдб рд╣реБрдЖ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рдЦреНрддреА рд╕реЗ рдЬрд░реВрд░реА рдирд╣реАрдВ рдерд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рддрд░рдл рд░рдЦрддреЗ рд╣реБрдП, рднрд╛рд╖рд╛ рд╕реНрддрд░ рдЖрджрд┐рдо рдХреЗ рдмрд┐рдирд╛, рдлреНрдпреВрдЪрд░реНрд╕ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрддреНрдпрдзрд┐рдХ рдиреЗрд╕реНрдЯреЗрдб рдХреЙрд▓рдмреИрдХ рд▓рд┐рдЦрдиреЗ рдХреА рд╢реИрд▓реА рдореЗрдВ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

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

async/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рд╡рд┐рд╡рд░рдг

async рд╕рдВрд╢реЛрдзрдХ

рдХреАрд╡рд░реНрдб async рдХреЛ рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  • рдПрдХ рдмреНрд▓реЙрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдкрд╣рд▓реЗред
  • рдПрдХ рдирд┐: рд╢реБрд▓реНрдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рд╣рд┐рддрд╛рд░реНрде рдореЗрдВ рд╕рдВрдмрджреНрдз рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдкрд╣рд▓реЗред

_(async рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╕реНрдерд╛рди - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд▓реЛрдЬрд░ рд▓рд┐рдЯрд░рд▓ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд┐рдзрд┐рдпрд╛рдБ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рд╕реНрдерд┐рд░ рдХреА рдЬрд╛рдПрдВрдЧреАред)_

async рд╕рдВрд╢реЛрдзрдХ рдЙрд╕ рдЖрдЗрдЯрдо рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ "рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрджрд▓рдХрд░" рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдмреНрд▓реЙрдХ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмреНрд▓реЙрдХ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдЙрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдмрдЬрд╛рдп рдЙрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдХреЙрд▓ рдЗрд╕рдХреЗ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХрд╛ рднрд╡рд┐рд╖реНрдп рд▓реМрдЯрд╛рддрд╛ рд╣реИред async рд╕рдВрд╢реЛрдзрдХ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдХреЛ async рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛

рдПрд╕рд┐рдВрдХреНрд╕ рд╕рдВрд╢реЛрдзрдХ рдЗрд╕ рд╕рдВрд╢реЛрдзрди рдХреЛ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╢реБрджреНрдз рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рднрд╡рд┐рд╖реНрдп рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рддрд░реНрдХ рдФрд░ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдмрд┐рдВрджреБ рдХреЛ рдЗрд╕ рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреА "рдкреЛрд▓" рд╡рд┐рдзрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрди рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддреА рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЕрдкрдиреА рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддреАред

async move рд╕рдВрд╢реЛрдзрдХ

рдХреНрд▓реЛрдЬрд░ рдХреЗ рд╕рдорд╛рди, async рдмреНрд▓реЙрдХ рднрд╡рд┐рд╖реНрдп рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрд╕рдкрд╛рд╕ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдЪрд░ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрд▓реЛрдЬрд░ рдХреА рддрд░рд╣, рдпреЗ рдЪрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдХреИрдкреНрдЪрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдиреНрд╣реЗрдВ move рд╕рдВрд╢реЛрдзрдХ (рдмрд╕ рдмрдВрдж рдХрд░рдиреЗ рдХреА рддрд░рд╣) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред async рдкрд╣рд▓реЗ рдЖрддрд╛ рд╣реИ move , рдЬрд┐рд╕рд╕реЗ рдпреЗ рдмреНрд▓реЙрдХ async move { } рдмреНрд▓реЙрдХ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

await рдСрдкрд░реЗрдЯрд░

рдПрдХ рдПрд╕рд┐рдВрдХ рд╕рдВрджрд░реНрдн рдХреЗ рднреАрддрд░, рдЗрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ await рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдПрдХ рдирдИ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ:

expression.await

рдкреНрд░рддреАрдХреНрд╖рд╛ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдПрдХ рдПрд╕рд┐рдВрдХ рд╕рдВрджрд░реНрдн рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЬрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЙрд╕реЗ Future рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкреНрд░рддреАрдХреНрд╖рд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЙрд╕ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореВрд▓реНрдп рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреА рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдСрдкрд░реЗрдЯрд░ рднрд╡рд┐рд╖реНрдп рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдПрд╕рд┐рдВрдХ рд╕рдВрджрд░реНрдн рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреАрд▓реНрдбрд┐рдВрдЧ рдХрдВрдЯреНрд░реЛрд▓ рдХреЗ рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЛ рд╕рд░рдлреЗрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕рд┐рдВрдЯреИрдХреНрд╕ YIELD_CONTROL! рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рдбрд┐рд╕реБрдЧрд░рд┐рдВрдЧ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧреА:

loop {
    match $future.poll(&waker) {
        Poll::Ready(value)  => break value,
        Poll::Pending       => YIELD_CONTROL!,
    }
}

рдпрд╣ рдЖрдкрдХреЛ рдПрд╕рд┐рдВрдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдлреНрдпреВрдЪрд░реНрд╕ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, Poll::Pending рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЙрдкрдЬ рдХреЛ рд╕рдмрд╕реЗ рдмрд╛рд╣рд░реА рдПрд╕рд┐рдВрдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрдВрддрддрдГ рдЙрд╕ рдирд┐рд╖реНрдкрд╛рджрдХ рдХреЛ рдЬрд┐рд╕ рдкрд░ рднрд╡рд┐рд╖реНрдп рдкреИрджрд╛ рд╣реБрдЖ рд╣реИред

рдкреНрд░рдореБрдЦ рдирд┐рд░реНрдгрдп рдмрд┐рдВрджреБ

рддреБрд░рдВрдд рдЙрдкрдЬ

рд╣рдорд╛рд░реЗ рдПрд╕рд┐рдВрдХ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдмреНрд▓реЙрдХ "рддреБрд░рдВрдд рдЙрдкрдЬ" - рдЙрдирдХрд╛ рдирд┐рд░реНрдорд╛рдг рдПрдХ рд╢реБрджреНрдз рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдПрд╕рд┐рдВрдХ рд╕рдВрджрд░реНрдн рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рдЬрдм рддрдХ рдЖрдк рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдорддрджрд╛рди рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддреЗ, рддрдм рддрдХ рдХреЛрдИ рднреА рдмреЙрдбреА рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

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

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

рд╕рдВрджрд░реНрдн:

рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕

рд╣рдорд╛рд░реЗ async рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ "рдмрд╛рд╣рд░реА" рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрдЬрд╛рдп "рдЖрдВрддрд░рд┐рдХ" рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рд╡реЗ рдЕрдВрддрддрдГ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╣реИрдВ, рдмрдЬрд╛рдп рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рдХрд┐ рд╡реЗ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рднрд╡рд┐рд╖реНрдп рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред

рдПрдХ рд╕реНрддрд░ рдкрд░, рдпрд╣ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдгрдп рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рддреА рд╣реИ: рдХреНрдпреЛрдВрдХрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ async рдПрдиреЛрдЯреЗрд╢рди рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдпрд╣ рддрдереНрдп рдХрд┐ рд╡реЗ рднрд╡рд┐рд╖реНрдп рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рдорджрджрдЧрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди async рдХреАрд╡рд░реНрдб рдХреЛ рднреА рдиреЛрдЯрд┐рд╕ рдХрд┐рдП рдмрд┐рдирд╛ рднрд╡рд┐рд╖реНрдп рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рдирдХрд╛рд░реА async рдХреАрд╡рд░реНрдб рджреНрд╡рд╛рд░рд╛ рднреА рджреА рдЬрд╛рддреА рд╣реИред

рдЬрд┐рд╕ рдЪреАрдЬ рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкреИрдорд╛рдиреЛрдВ рдХреЛ рдЗрддреНрддрд▓рд╛ рджреЗ рджреА, рд╡рд╣ рдереА рдЬреАрд╡рди рднрд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдХрд╛ рдореБрджреНрджрд╛ред рдХрд┐рд╕реА рднреА рдПрд╕рд┐рдВрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ "рдмрд╛рд╣рд░реА" рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ impl Future<Output = T> , рдЬрд╣рд╛рдВ T рдЖрдВрддрд░рд┐рдХ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд╣ рднрд╡рд┐рд╖реНрдп рдХрд┐рд╕реА рднреА рдЗрдирдкреБрдЯ рддрд░реНрдХ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЛ рднреА рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдХреИрдж рдХрд░ рд▓реЗрддрд╛ рд╣реИ: рдпрд╣ impl Trait рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ, рдЬрд┐рд╕реЗ рддрдм рддрдХ рдХрд┐рд╕реА рднреА рдЗрдирдкреБрдЯ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдмрд╛рд╣рд░реА рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдПрд╕рд┐рдВрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдЖрдЬреАрд╡рди рдПрд▓рд┐рд╢рди рд╕реЗ рдХрднреА рд▓рд╛рдн рдирд╣реАрдВ рд╣реБрдЖ (рдЬрдм рддрдХ рдХрд┐ рд╣рдордиреЗ рдХреБрдЫ рдФрд░ рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬреИрд╕реЗ рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо рдПрд▓рд┐рдЬрди рдирд┐рдпрдо рдПрд╕рд┐рдВрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ)ред

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

рд╡рд┐рдирд╛рд╢рдХ рдЖрджреЗрд╢

рдПрд╕рд┐рдВрдХ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рд╡рд┐рдирд╛рд╢рдХреЛрдВ рдХрд╛ рдХреНрд░рдо рдЧреИрд░-рдПрд╕рд┐рдВрдХ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИред рдпрд╣рд╛рдВ рд╕рдЯреАрдХ рдирд┐рдпрдо рдереЛрдбрд╝реЗ рдЬрдЯрд┐рд▓ рдФрд░ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореВрд▓реНрдп рддрдм рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рддрдХ рд╡реЗ рд╕рд╛рдл рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреЗ, рддрдм рддрдХ рд╡реЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рд░рд╣рддреЗ рд╣реИрдВред рдпрджрд┐ рдЙрд╕ рд╕рдордп рдореЗрдВ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдХрдерди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рддреЛ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рднрд╡рд┐рд╖реНрдп рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдирдХреЗ рд╡рд┐рдирд╛рд╢рдХреЛрдВ рдХреЛ рдЙрдЪрд┐рдд рд╕рдордп рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред

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

(рдХрд┐рд╕реА рджрд┐рди, рд╣рдо рд╡рд┐рдирд╛рд╢рдХреЛрдВ рдХреЛ рд╢реБрджреНрдз рдФрд░ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрд╕рд┐рдВрдХ/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд╣рд┐рддрд╛рд░реНрде рднреА рд╣реИрдВред)

рд╕рдВрджрд░реНрдн:

рдСрдкрд░реЗрдЯрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ

рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреА async/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рдПрдХ рдмрдбрд╝рд╛ рд╡рд┐рдЪрд▓рди рд╣рдорд╛рд░реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдСрдкрд░реЗрдЯрд░ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИред рдпрд╣ рд░рд╕реНрдЯ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдирд┐рд░реНрдгрдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЪрд░реНрдЪрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд░рд╣рд╛ рд╣реИред

2015 рдХреЗ рдмрд╛рдж рд╕реЗ, рд░рд╕реНрдЯ рдХреЗ рдкрд╛рд╕ рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ ? рдСрдкрд░реЗрдЯрд░ рд╣реИред 1.0 рд╕реЗ рдмрд╣реБрдд рдкрд╣рд▓реЗ, рд░рд╕реНрдЯ рдХреЗ рдкрд╛рд╕ рдлреАрд▓реНрдб рдПрдХреНрд╕реЗрд╕ рдФрд░ рдореЗрдердб рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ . рдСрдкрд░реЗрдЯрд░ рднреА рдерд╛ред рдХреНрдпреЛрдВрдХрд┐ рдлреНрдпреВрдЪрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ IO рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рд╣реИ, рдлреНрдпреВрдЪрд░реНрд╕ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди Result рд╕рд╛рде рдХреБрдЫ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ
рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд▓рдЧрднрдЧ рд╣рд░ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдСрдкрд░реЗрд╢рди рдХреЛ ? рдпрд╛ рдЙрд╕рдХреЗ рдмрд╛рдж рдПрдХ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдФрд░ рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЗрд╕рдиреЗ рд▓рдЧрднрдЧ рд╣рд░ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдСрдкрд░реЗрдЯрд░ рдХреЛ (await future)? рд▓рд┐рдЦрд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рд╣рдо рдЕрддреНрдпрдзрд┐рдХ рдЕрд░рд╛рдЬрдХреАрдп рдорд╛рдирддреЗ рдереЗред

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

рд╕рдВрджрд░реНрдн:

рд╕рд┐рдВрдЧрд▓ рдФрд░ рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯрд░реНрд╕ рджреЛрдиреЛрдВ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдирд╛

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

impl Trait рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдореМрдЬреВрджрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рдорд╛рди, рдПрд╕рд┐рдВрдХреНрд╕ рднрд╡рд┐рд╖реНрдп рдХреЗ рдСрдЯреЛ рд▓рдХреНрд╖рдгреЛрдВ рдХреЛ "рд▓реАрдХ" рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡реЗ рд▓реМрдЯрддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рдмрд╛рд╣рд░реА рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рднрд╡рд┐рд╖реНрдп рд╣реИ, рдХреЙрд▓рд░ рдпрд╣ рднреА рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд╣ рдкреНрд░рдХрд╛рд░ рдЙрд╕рдХреЗ рд╢рд░реАрд░ рдХреА рдкрд░реАрдХреНрд╖рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднреЗрдЬреЗрдВ рдпрд╛ рд╕рд┐рдВрдХ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдПрдХ async fn рдХрд╛ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдПрдХ рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯрд░ рдкрд░ рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЬрд╛рдБрдЪ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреНрд░рдХрд╛рд░ рдХреЛ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ

рдХреБрдЫ рдЪрд┐рдВрддрд╛ рдереА рдХрд┐ рдЬрдм рдПрд╕рд┐рдВрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рддреЛ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рдж рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдХрд╛рдлреА рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реЛрдЧреАред

рд╕рдВрджрд░реНрдн:

рдЬреНрдЮрд╛рдд рд╕реНрдерд┐рд░реАрдХрд░рдг рдЕрд╡рд░реЛрдзрдХ

рд░рд╛рдЬреНрдп рдХрд╛ рдЖрдХрд╛рд░

рдореБрджреНрджрд╛: #52924

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд░рд╛рдЬреНрдп рдорд╢реАрди рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд╕ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд░рд╛рдЬреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░рд╛рдЬреНрдп рдХрд╛ рдЖрдХрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрдкрд░рд▓рд╛рдЗрдирд┐рдпрд░ рд░реВрдк рд╕реЗ рдмрдврд╝рддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдЯреИрдХ рдкрд░ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд░рд╛рдЬреНрдп рдХрд╛ рдЖрдХрд╛рд░ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рд╕реНрдЯрдо рдереНрд░реЗрдб рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдХреЛрдбрдЬрди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рддрд╛рдХрд┐ рдЖрдХрд╛рд░ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рд╣реЛ, рдХрдо рд╕реЗ рдХрдо рдЗрддрдирд╛ рдЦрд░рд╛рдм рди рд╣реЛ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рд╣реЛ, рдПрдХ рдЕрд╡рд░реБрджреНрдз рдмрдЧ рдлрд┐рдХреНрд╕ рд╣реИред

async рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рдЬреАрд╡рдирдХрд╛рд▓

рдореБрджреНрджрд╛: #56238

async рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЙрдирдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ рдХрдИ рдЬреАрд╡рдирдХрд╛рд▓ рд░рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рднреА рднрд╡рд┐рд╖реНрдп рдореЗрдВ "рдХреИрдкреНрдЪрд░" рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдЕрдВрджрд░ impl Future рдХрдо рд╣реЛрдирд╛ рдПрдХрд╛рдзрд┐рдХ рдЗрдирдкреБрдЯ рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ; рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╣рд░реЗ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ
рдЗрд╕ рдХрд╛рдоред рдЪреВрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдИ (рд╢рд╛рдпрдж рд╕рднреА elieded) рдЗрдирдкреБрдЯ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдЕрд╡рд░реБрджреНрдз рдмрдЧ рдлрд┐рдХреНрд╕ рд╣реИред

рдЕрдиреНрдп рдЕрд╡рд░реБрджреНрдз рдореБрджреНрджреЗ:

рд▓реЗрдмрд▓

рднрд╡рд┐рд╖реНрдп рдХрд╛ рдХрд╛рд░реНрдп

рдпреЗ рд╕рднреА рдЬреНрдЮрд╛рдд рд╣реИрдВ рдФрд░ рдПрдорд╡реАрдкреА рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИрдВ, рдЬреИрд╕реЗ рд╣реА рд╣рдо рдПрд╕рд┐рдВрдХ/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рднреЗрдЬ рджреЗрддреЗ рд╣реИрдВ, рд╣рдо рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдПрд╕рд┐рдВрдХреНрд╕ рдХреНрд▓реЛрдЬрд░

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрд░рдПрдлрд╕реА рдореЗрдВ, рд╣рдордиреЗ рдПрд╕рд┐рдВрдХреНрд╕ рд╕рдВрд╢реЛрдзрдХ рдХреЛ рдХреНрд▓реЛрдЬрд░ рд▓рд┐рдЯрд░рд▓ рдкрд░ рдПрдХ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд╕рдорд░реНрдерди рдХрд┐рдпрд╛, рдЕрдЬреНрдЮрд╛рдд рдПрд╕рд┐рдВрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд░рд╣рд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрднрд╡ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рдЬ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрднреА рднреА рдХрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реИ:

  1. рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХреИрдкреНрдЪрд░ рдХреА рдкреНрд░рдХреГрддрд┐ рдПрд╕рд┐рдВрдХ рдХреНрд▓реЛрдЬрд░ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдХреБрдЫ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
  2. рдЗрдирдкреБрдЯ рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо рдХреЗ рд╕рд╛рде async рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░ рд╕рд╛рд░ рдирд┐рдХрд╛рд▓рдирд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рднрд╛рд╖рд╛ рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдиреЛ-рдПрд╕рдЯреАрдбреА рд╕рдкреЛрд░реНрдЯ

рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЯреАрдПрд▓рдПрд╕ рдХреЛ рд╡реЗрдХрд░ рдХреЛ рдиреАрдЪреЗ рдХреА рдУрд░ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдВрддрд░рд┐рдХ рднрд╡рд┐рд╖реНрдп рдХрд╛ рдЪреБрдирд╛рд╡ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ "рд╣реИрдХ" рд╣реИ рдЬреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдЯреАрдПрд▓рдПрд╕ рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдореЗрдВ, рд╣рдорд╛рд░рд╛ рдЯреАрдПрд▓рдПрд╕ рдХреЗ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡реЗрдХрд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЗрдЯ рдорд╢реАрди рдЬрдирд░реЗрд╢рди рдХреЛрдб рдореЗрдВ рдЧрд╣рд░реЗ рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рддрд░реНрдХ рд▓реЗрдиреЗ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХреЗред

рдпрджреНрдпрдкрд┐ рд╣рдо рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рдирд╣реАрдВ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдЗрд╕реЗ рдПрдХ рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдорд╛рдирддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ TLS рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рд╕рд┐рд╕реНрдЯрдо рдкрд░ async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╢реБрджреНрдз рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореБрджреНрджрд╛ рд╣реИ: рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рдХреБрдЫ рднреА рдЯреАрдПрд▓рдПрд╕ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ ред

Async рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд┐рдзрд┐рдпрд╛рдБ

рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓рдХреНрд╖рдгреЛрдВ рдореЗрдВ async рд╕рдВрдмрджреНрдз рдХрд╛рд░реНрдпреЛрдВ рдпрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ; рдпрд╣ рдПрдХрдорд╛рддреНрд░ рд╕реНрдерд╛рди рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк fn рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди async fn ред Async рддрд░реАрдХреЗ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЕрдореВрд░реНрдд рд╣реЛрдВрдЧреЗ рдФрд░ рд╣рдо рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

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

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рднрд╡рд┐рд╖реНрдп рд╕рднреА рдЗрдирдкреБрдЯ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░реЗрдЧрд╛, рдХрд┐рд╕реА рднреА рдЗрдирдкреБрдЯ рдЬреАрд╡рдирдХрд╛рд▓ рдпрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреА рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдЬреЗрдиреЗрд░рд┐рдХ рд╕рдВрдмрджреНрдз рдкреНрд░рдХрд╛рд░ рдирд╛рдордХ рдПрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдПрдХ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдЬрд┐рд╕реЗ рд╣рдо рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЪрд╛рд╣рддреЗ рдереЗ рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдареАрдХ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдХрд▓реНрдк рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдмрджреНрдз рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рдВрдХрд▓реНрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

рдмрдХрд╛рдпрд╛ рдбрд┐рдЬрд╛рдЗрди рдореБрджреНрджреЗ рднреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде async рд╡рд┐рдзрд┐рдпрд╛рдБ рд╡рд┐рдирд┐рдореЗрдп рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕рдорд╛рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрдВрдЧреЗ? рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, async рд╡рд┐рдзрд┐рдпрд╛рдБ рдСрдЯреЛ рд▓рдХреНрд╖рдгреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдХреБрдЫ async рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рднрд╡рд┐рд╖реНрдп рдПрдХ рдСрдЯреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЖрдк рдПрдХ async рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рд╕рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдиреНрдпреВрдирддрдо рд╕рдорд░реНрдерди рднреА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рднрд╡рд┐рд╖реНрдп рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд┐рдЪрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ "рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реБрд░рдХреНрд╖рд┐рдд" рдмрдирд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ред

рдЬреЗрдирд░реЗрдЯрд░ рдФрд░ рдПрд╕рд┐рдВрдХ рдЬреЗрдирд░реЗрдЯрд░

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдХреЛрд░рдЯрд╛рдЗрди рд╕реНрдЯреЗрдЯ рдорд╢реАрди рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрд╕реНрдерд┐рд░ рдЬрдирд░реЗрдЯрд░ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬреЛ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдХрдИ рдорд╛рди рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдирд╛рдирд╛ рд╣реИ рдЬреЛ "рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ" рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрд╕рд┐рдВрдХ рдлрд╝рдВрдХреНрд╢рди рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
рд╡рд╛рдпрджрд╛ред рдЗрд╕реА рддрд░рд╣, рд╣рдо рдПрд╕рд┐рдВрдХ рдЬреЗрдирд░реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд░рдЪрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ "рд╕реНрдЯреНрд░реАрдо" рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрдЯрд░реЗрдЯрд░ рдХреЗ рдПрд╕рд┐рдВрдХ рд╕рдордХрдХреНрд╖ред рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЕрдХреНрд╕рд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмреАрдЪ рднреЗрдЬреЗ рдЬрд╛ рд░рд╣реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдзрд╛рд░рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВред

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

A-async-await AsyncAwait-Focus F-async_await I-nominated T-lang disposition-merge finished-final-comment-period

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЙрдкрд░реЛрдХреНрдд рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡рд┐рд▓рдп рдХреЗ рд╕реНрд╡рднрд╛рд╡ рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рдЯрд┐рдкреНрдкрдгреА рдЕрд╡рдзрд┐ рдЕрдм рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ ред

рд╢рд╛рд╕рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рд▓реЗрдЦрдХ рдХреЛ рдЙрдирдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдФрд░ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЖрд░рдПрдлрд╕реА рдХрд╛ рдЬрд▓реНрдж рд╣реА рд╡рд┐рд▓рдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рднреА 58 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@rfcbot fcp рдорд░реНрдЬ

рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп @withboats рдиреЗ рдЗрд╕реЗ рдорд░реНрдЬ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛ рд╣реИред рдЕрдЧрд▓рд╛ рдЪрд░рдг рдмрд╛рдХреА рдЯреИрдЧ рдХреА рдЧрдИ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдореАрдХреНрд╖рд╛ рд╣реИ:

  • [x] @рд╕реЗрдВрдЯреНрд░рд┐рд▓
  • [рдПрдХреНрд╕] @ рдХреНрд░реИрдорд░реНрдЯрдЬ
  • [x] @eddyb
  • [x] @joshtriplett
  • [x] @nikomatsakis
  • [ ] @pkfelix
  • [x] @scottmcm
  • [x] @ рдирд╛рд╡реЛрдВ рдХреЗ рдмрд┐рдирд╛

рдЪрд┐рдВрддрд╛рдУрдВ:

  • рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди-рдХрд╛рд░реНрдп-рдЕрд╡рд░реБрджреНрдз-рд╕реНрдерд┐рд░реАрдХрд░рдг https://github.com/rust-lang/rust/issues/62149#issuecomment -517418610 рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛

рдПрдХ рдмрд╛рд░ рдЬрдм рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдореАрдХреНрд╖рдХ рд╕реНрд╡реАрдХреГрддрд┐ рджреЗ рджреЗрддреЗ рд╣реИрдВ (рдФрд░ рдЕрдзрд┐рдХрддрдо 2 рдЕрдиреБрдореЛрджрди рдмрдХрд╛рдпрд╛ рд╣реИрдВ), рддреЛ рдпрд╣ рдЕрдкрдиреА рдЕрдВрддрд┐рдо рдЯрд┐рдкреНрдкрдгреА рдЕрд╡рдзрд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрд┐рдВрджреБ рдкрд░ рдирд╣реАрдВ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдмреЛрд▓реЗрдВ!

рдЯреИрдЧ рдХреА рдЧрдИ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рдореБрдЭреЗ рдХреНрдпрд╛ рдЖрджреЗрд╢ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП

(рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рдлрд┐рд╕рд▓реЗ рдирд╣реАрдВ рд╣реИрдВ, рдореМрдЬреВрджрд╛ рдмреНрд▓реЙрдХрд░реНрд╕ рдХреЛ рдЙрдкрд░реЛрдХреНрдд рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ)

@rfcbot рдЪрд┐рдВрддрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди-рдХрд╛рд░реНрдп-рдЕрд╡рд░реБрджреНрдз-рд╕реНрдерд┐рд░реАрдХрд░рдг

рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп ... рдиреЗ рдЗрд╕реЗ рдорд░реНрдЬ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ

рдХреЛрдИ рдЬреАрдердм рдореБрджреНрджреЗ рдХреЛ рдХреИрд╕реЗ рдорд░реНрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ)?

@vi рдмреЙрдЯ рдмрд╕ рдереЛрдбрд╝рд╛ рд╕рд╛ рдмреЗрд╡рдХреВрдл рд╣реИ рдФрд░ рдпрд╣ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдИ рдореБрджреНрджрд╛ рд╣реИ рдпрд╛ рдкреАрдЖрд░ :) рдЖрдк рдпрд╣рд╛рдВ "рдорд░реНрдЬ" рдХреЛ "рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ" рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд╛рд╣, рд╡реНрдпрд╛рдкрдХ рд╕рд╛рд░рд╛рдВрд╢ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдХреЗрд╡рд▓ рдореВрд░реНрдд рд░реВрдк рд╕реЗ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЖрдк рд╣рд░ рдЪреАрдЬ рдореЗрдВ рд╢реАрд░реНрд╖ рдкрд░ рд╣реИрдВред

@rfcbot рдиреЗ рд╕рдореАрдХреНрд╖рд╛ рдХреА

рдХреНрдпрд╛ рд╕реНрдерд┐рд░реАрдХрд░рдг рдЕрд╡рд░реЛрдзрдХреЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ "рдЯреНрд░рд╛рдПрдЬ AsyncAwait-рдЕрд╕реНрдкрд╖реНрдЯ рдореБрджреНрджреЛрдВ" рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдФрд░/рдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд┐рдВрддрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ)?

рдореБрдЭреЗ https://github.com/rust-lang/rust/issues/60414 рдорд┐рд▓рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ (рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдореЗрд░реА рдмрдЧ рд╣реИ: рдкреА), рдФрд░ рдХрдо рд╕реЗ рдХрдо рд╕реНрдерд┐рд░реАрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдердЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ :)

рд░рд╕реНрдЯ рдЯреАрдореЛрдВ рдиреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рдЬреЛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рд╣реИрдВ, рдЙрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рдореБрджрд╛рдп рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ! рд╕рдВрдЪрд╛рд░ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдбрд┐рдЬрд╝рд╛рдЗрди, рдЪрд░реНрдЪрд╛ рдФрд░ рдХреБрдЫ рдмреНрд░реЗрдХрдбрд╛рдЙрди рд╣реБрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдореИрдВ, рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдордиреЗ рд░рд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╕рдВрднрд╡ рдкрд╛рдпрд╛ рд╣реИред рдЯрд╛рдбрд╛:

(рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореИрдВ рднрд╡рд┐рд╖реНрдп рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдореЗрдВ рдкреВрд░реНрдгрддрд╛-рдЖрдзрд╛рд░рд┐рдд рдФрд░ рдПрд╕рд┐рдВрдХ-рд░рджреНрджреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рдПрдкреАрдЖрдИ рдХреЛ рдмреНрд░рд┐рдЬрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЯреАрдПрд▓; рдбреАрдЖрд░ рдЙрдиреНрд╣реЗрдВ рдЕрднреА рднреА рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╡рд╛рд▓реЗ рдмрдлрд░ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реИред рдпрд╣ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рд╕рд╛рдеред)

рдореИрдВ рдкреВрд░реНрдгрддрд╛-рдЖрдзрд╛рд░рд┐рдд рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рднреА рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред (рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрдВрддрд░рд┐рдХ рдзрд╛рдЧрд╛ рджреЗрдЦреЗрдВ) рдЖрдИрдУрд╕реАрдкреА рдФрд░ io_uring рдХреА рд╢реБрд░реВрдЖрдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЬреЛ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдПрд╕рд┐рдВрдХреНрд╕ рдЖрдИрдУ рдХреЗ рд▓рд┐рдП рд░рд╛рд╕реНрддрд╛ рдмрди рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рд░рд╛рд╕реНрддрд╛ рд╣реЛрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред IIUC рдХрд╛рд▓реНрдкрдирд┐рдХ async рдбреНрд░реЙрдк рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╡рд╛рд▓реЗ рдмрдлрд╝рд░реНрд╕ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдХрдо рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрдо рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЦрд░рд╛рдм рдЗрд▓рд╛рдХреЗ рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг)ред

@newpavlov рдореИрдВрдиреЗ рдПрд╕рд┐рдВрдХ рдбреНрд░реЙрдк рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрд▓рдЧ рдорд╛рд░реНрдЧ рд╣реИрдВ, рдЬреИрд╕реЗ рд╕рдВрд╕рд╛рдзрди рдкреВрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╣рд╛рдВ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдХреБрдЫ рд╕рдлрд╛рдИ рдХрд╛рд░реНрдп рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рдкрдбрд╝рддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рдлреНрдпреВрдЪрд░реНрд╕ рдПрдкреАрдЖрдИ рдЙрддреНрдкрд╛рджрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕рдорд╕реНрдпрд╛ async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕реНрдерд┐рд░реАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЬреЛ рдХрд┐ рдлреНрдпреВрдЪрд░реНрд╕ API рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдСрд░реНрдереЛрдЧреЛрдирд▓ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдерд┐рд░ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред рдмреЗрдЭрд┐рдЭрдХ рдЖрдЧреЗ рдХреЗ рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ рдпрд╛ рдлреНрдпреВрдЪрд░реНрд╕-рдЖрд░рдПрд╕ рд░реЗрдкреЛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред

@ рдПрдХреНрд▓реЛрдЧ

рдХреНрдпрд╛ рд╕реНрдерд┐рд░реАрдХрд░рдг рдЕрд╡рд░реЛрдзрдХреЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ "рдЯреНрд░рд╛рдПрдЬ AsyncAwait-рдЕрд╕реНрдкрд╖реНрдЯ рдореБрджреНрджреЛрдВ" рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдФрд░/рдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд┐рдВрддрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ)?

рд╣рд╛рдБ, рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд╣рдо рд╣рд░ рд╣рдлреНрддреЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВред WRT рд╡рд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджрд╛ (#60414), рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдФрд░ рдЗрд╕реЗ рдареАрдХ рд╣реЛрддреЗ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдЕрднреА рддрдХ рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд░ рдкрд╛рдП рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рд╕реНрдерд┐рд░реАрдХрд░рдг рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА -> impl Trait рдлрд╝рдВрдХреНрд╢рдиред

@cramertj рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ #60414 рдХрд╛ рдореБрджреНрджрд╛ рдореВрд▓ рд░реВрдк рд╕реЗ "рддреНрд░реБрдЯрд┐ рдЕрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд▓реНрджреА рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ", рдЬрдмрдХрд┐ -> impl Trait рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рднреА рдЗрд╕реЗ рдкрд╣рд▓реЗ рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ - рдлрд┐рд░ рдпрд╣ рдареАрдХ рд╣реИ рдЕрдЧрд░ рдЗрд╕реЗ рд╡реИрд╕реЗ рднреА рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреБрдЫ рдореБрджреНрджреЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП :) (Fwiw рдпрд╣ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдХреЛрдб рдореЗрдВ рдкреИрджрд╛ рд╣реБрдИ рдЬрд╣рд╛рдВ рдореИрдВ рджреЛрдиреЛрдВ рд▓реМрдЯ рд╣реЛрдЧрд╛ () рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдФрд░ T::Assoc рдПрдХ рдФрд░ рдкрд░ рдЬреЛ IIRC рдореБрдЭреЗ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ, - #60414 рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХреА рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╢рд╛рдпрдж рдореЗрд░реА рдпрд╛рдж рдЧрд▓рдд рд╣реИ)

@Ekleog рд╣рд╛рдБ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ! рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рджрд░реНрдж рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛-- рдореИрдВрдиреЗ рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджреЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ, рдореИрдВ 1.38 рд▓рдХреНрд╖реНрдп рд╕реЗ рдЪреВрдХ рдЧрдпрд╛ред

@cramertj

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрд▓рдЧ рдорд╛рд░реНрдЧ рд╣реИрдВ, рдЬреИрд╕реЗ рд╕рдВрд╕рд╛рдзрди рдкреВрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╣рд╛рдВ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдХреБрдЫ рд╕рдлрд╛рдИ рдХрд╛рд░реНрдп рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рдкрдбрд╝рддреА рд╣реИред

рдХреНрдпрд╛ рд╡реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд╛рдЬреНрдп рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдлрд░ рд░рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдХреБрд╢рд▓ рдирд╣реАрдВ рд╣реИрдВ? рдореЗрд░реА рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдбрд┐рдЬрд╝рд╛рдЗрди рд╢реВрдиреНрдп-рд▓рд╛рдЧрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдХрд┐ рдЖрдк async рдЕрдореВрд░реНрддрддрд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдПрдХ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдХреЛрдб рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ) рдФрд░ рдкреВрд░реНрдгрддрд╛-рдЖрдзрд╛рд░рд┐рдд рдПрдкреАрдЖрдИ рдкрд░ рдХрдо рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ, рдФрд░ рд╡рд╣рд╛рдБ рд╣реИ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╢реЛ-рд╕реНрдЯреЙрдкрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рдРрд╕реА рдХрдорд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдУрдкреА рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдзред

@рдбреНрдпреВрдХ

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

рдпрд╣ рд╕рдорд╕реНрдпрд╛ 1.38 рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреА рд╣реИ, рд╡рд┐рд╡рд░рдг рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рджреЗрдЦреЗрдВред

@huxi рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рд╡рд╣ рдпрд╛рдж рдЖрдпрд╛ред рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рд╕рдВрдкрд╛рджрд┐рдд рдХреАред

@newpavlov

рдХреНрдпрд╛ рд╡реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд╛рдЬреНрдп рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдлрд░ рд░рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдХреБрд╢рд▓ рдирд╣реАрдВ рд╣реИрдВ? рдореЗрд░реА рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдбрд┐рдЬрд╝рд╛рдЗрди рд╢реВрдиреНрдп-рд▓рд╛рдЧрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдХрд┐ рдЖрдк рдПрд╕рд┐рдВрдХреНрд╕ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдПрдХ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдХреЛрдб рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ) рдФрд░ рдкреВрд░реНрдгрддрд╛-рдЖрдзрд╛рд░рд┐рдд рдПрдкреАрдЖрдИ рдкрд░ рдХрдо рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ, рдФрд░ рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╣ред рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╢реЛ-рд╕реНрдЯреЙрдкрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рдРрд╕реА рдХрдорд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдУрдкреА рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдзред

рдирд╣реАрдВ, рдЬрд░реВрд░реА рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдкрд░ рдПрдХ рдореБрджреНрджреЗ рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрд╕рд┐рдВрдХреНрд╕/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕реНрдерд┐рд░реАрдХрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред

(рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореИрдВ рднрд╡рд┐рд╖реНрдп рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдореЗрдВ рдкреВрд░реНрдгрддрд╛-рдЖрдзрд╛рд░рд┐рдд рдФрд░ рдПрд╕рд┐рдВрдХ-рд░рджреНрджреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рдПрдкреАрдЖрдИ рдХреЛ рдмреНрд░рд┐рдЬрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЯреАрдПрд▓; рдбреАрдЖрд░ рдЙрдиреНрд╣реЗрдВ рдЕрднреА рднреА рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╡рд╛рд▓реЗ рдмрдлрд░ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реИред рдпрд╣ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рд╕рд╛рдеред)

рдореИрдВ рдкреВрд░реНрдгрддрд╛-рдЖрдзрд╛рд░рд┐рдд рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рднреА рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред (рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдпрд╣ рдЗрдВрдЯрд░реНрдирд▓ рдереНрд░реЗрдб рджреЗрдЦреЗрдВ) рдЖрдИрдУрд╕реАрдкреА рдФрд░ io_uring рдХреА рд╢реБрд░реВрдЖрдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЬреЛ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдПрд╕рд┐рдВрдХреНрд╕ рдЖрдИрдУ рдХреЗ рд▓рд┐рдП рд░рд╛рд╕реНрддрд╛ рдмрди рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рд░рд╛рд╕реНрддрд╛ рд╣реЛрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдореИрдВ рдЯреЗрд▓рд░ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реНрдерд╛рди рдореЗрдВ рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рд╡рд┐рд╖рдп рд╕реЗ рджреВрд░ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рд▓реВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ io_uring рдХреЗ рдЖрд╕рдкрд╛рд╕ рдпрд╣ рдЪрд░реНрдЪрд╛) рдЬреЛ рдПрд╕рд┐рдВрдХ/рд╕реНрдерд┐рд░реАрдХрд░рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ: рдХреА рд╕рдорд╕реНрдпрд╛ рд╕рдордпред

io_uring рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬреЛ рдЗрд╕ рд╕рд╛рд▓ 2019 рдореЗрдВ Linux рдореЗрдВ рдЖ рд░рд╣рд╛ рд╣реИред рд░рд╕реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд╛рд░ рд╕рд╛рд▓ рдкрд╣рд▓реЗ 2015 рд╕реЗ рдлреНрдпреВрдЪрд░реНрд╕ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред 2015 рдФрд░ 2016 рдХреЗ рджреМрд░рд╛рди рдПрдХ рдкреВрд░реНрдгрддрд╛ рдЖрдзрд╛рд░рд┐рдд рдПрдкреАрдЖрдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдорддрджрд╛рди рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдореМрд▓рд┐рдХ рд╡рд┐рдХрд▓реНрдк рд╣реБрдЖред 2015 рдореЗрдВ рд░рд╕реНрдЯрдХреИрдВрдк рдореЗрдВ, рдХрд╛рд░реНрд▓ , рдПрдордУрдУ рдореЗрдВ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдХреНрдпреЛрдВ рдмрдирд╛рдпрд╛ред 2016 рдореЗрдВ рдЗрд╕ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдореЗрдВ, рд╣рд╛рд░реВрди рдЯреНрдпреВрд░реЙрди рдиреЗ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдЕрдореВрд░реНрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд╛рднреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред рдпреЗ рдирд┐рд░реНрдгрдп рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдХрд┐рдП рдЧрдП рдереЗ рдФрд░ рд╣рдо рдЙрд╕ рдореБрдХрд╛рдо рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рдереЗ рдЬреЛ рдЕрдм рд╣рдо рдЙрдирдХреЗ рдмрд┐рдирд╛ рд╣реИрдВред

рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд╛рдпрджрд╛ рдореЙрдбрд▓ рдкрд░ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпреЗ рд╕реБрдЭрд╛рд╡ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рд╣рдо 3 рдпрд╛ 4 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдереЗ, рдФрд░ рдЙрд╕ рдмрд┐рдВрджреБ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд╣реЗрдб рдкреЗрд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдЕрдореВрд░реНрдд рдкреВрд░реНрдгрддрд╛-рдЖрдзрд╛рд░рд┐рдд рдЖрдИрдУ рдореЙрдбрд▓ рдХреЛ рдХрд╡рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╣рд╛рд░реВрди рдиреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ? рд╣рдо рдЙрд╕ рдореЙрдбрд▓ рдХреЛ рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдХреИрд╕реЗ рдореИрдк рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ "рд╕рд╛рдорд╛рдиреНрдп рдЬрдВрдЧ + рдорд╛рдореВрд▓реА рдПрдиреЛрдЯреЗрд╢рди" рд▓рд┐рдЦрдиреЗ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ? рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рдХреИрд╕реЗ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдЗрди рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд┐рди рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рд╣реИ? рдЗрди рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╖рдп рд╕реЗ рдкрд░реЗ рд╣реЛрдЧреА; рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдЙрддреНрддрд░ рджреЗрдирд╛ рдФрд░ рдЙрддреНрддрд░реЛрдВ рдХреЛ рд╕рд╣реА рд╕рд╛рдмрд┐рдд рдХрд░рдирд╛ рдХрд╛рдо рд╣реИред рдЕрдм рддрдХ рд╡рд┐рднрд┐рдиреНрди рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдареЛрд╕ рджрд╢рдХ рдХреЗ рд╢реНрд░рдо-рд╡рд░реНрд╖реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд░рд╕реНрдЯ рдХрд╛ рд▓рдХреНрд╖реНрдп рдПрдХ рдРрд╕реЗ рдЙрддреНрдкрд╛рдж рдХреЛ рд╢рд┐рдк рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд▓реЛрдЧ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВ, рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╢рд┐рдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред рд╣рдо рд╣рдореЗрд╢рд╛ рднрд╡рд┐рд╖реНрдп рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд░реБрдХ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдЧрд▓реЗ рд╕рд╛рд▓ рдХреНрдпрд╛ рдмрдбрд╝рд╛ рд╕реМрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЦреБрдж рдХреЛ рдкрд╛рддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдо рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдПрдХ рдмрдбрд╝реА рдЪреАрдЬ рд╕реЗ рдЪреВрдХ рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЦрдбрд╝рд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреВрд░реНрдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рд╣реИ a) рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реИ io_uring рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛, b) рд╕рдВрдкреВрд░реНрдг рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ io_uring рдХрд┐рддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдЧрд╛ред рд╣рдо рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ 4 рд╕рд╛рд▓ рдХреЗ рдХрд╛рдо рдХреЛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╛рди, рд╢рд╛рдпрдж рдФрд░ рднреА рдЧрдВрднреАрд░, рдЬрдВрдЧ рдХреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВред рдореИрдВ рдПрдХ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдирд┐рдХ рдлрд┐рдЯреНрдЬрдЧреЗрд░рд╛рд▓реНрдб рдХреЗ рд╕рд╛рде рдЖрдЦрд┐рд░реА рдмрд╛рд░ рджреЗрдЦрд╛ рдерд╛: рдЬреАрд╕реА рдПрдХреАрдХрд░рдгред рд╡рд╛рд╕реНрдо рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рд╕реНрдкреЗрд╕ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реИ, рддрд╛рдХрд┐ рд╡реЗ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рдЕрд▓рдЧ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрд┐рд╕реА рджрд┐рди рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ)ред рд░рд╕реНрдЯ рдХрд╛ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХреЗрд╡рд▓ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХреЛрдИ рднреА рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдЬреЛ рдЖрдЬ рд╣реАрдк рдореЗрдореЛрд░реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ 1 рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рд╣реИред рдЬрдмрдХрд┐ рд╣рдордиреЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдФрд░ рддрдХрдиреАрдХреА-рдиреЙрдирдмреНрд░реЗрдХрд┐рдВрдЧ-рд▓реЗрдХрд┐рди-рдмреЗрд╣рдж-рд╡рд┐рдШрдЯрдирдХрд╛рд░реА рддрдХрдиреАрдХреА рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рд╕реНрдХреЗрдЪ рдХрд┐рдпрд╛ рд╣реИ, рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░рд╛рд╕реНрддрд╛ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА wasm GC рдХрд╣рд╛рдиреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд░рд╕реНрдЯ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдореМрдЬреВрдж рд╣реИред

рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкрд╣рд▓реВ рдЬреЛ рд╣рдо рдпрд╣рд╛рдВ рд╕реНрдерд┐рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рд╕реЗ рд╕реЗрд▓реНрдл-рд░реЗрдлрд░реЗрдВрд╢рд┐рдпрд▓ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдЬреЛ рджрд┐рд▓рдЪрд╕реНрдк рдмрдирд╛рддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ Pin<&mut SelfReferentialGenerator> , рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрджрд░реНрдн рд╣реИ ( Pin рдореЗрдВ рдПрдХ рдлрд╝реАрд▓реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд) рдкреВрд░реЗ рдЬреЗрдирд░реЗрдЯрд░ рд░рд╛рдЬреНрдп рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрд╕ рд░рд╛рдЬреНрдп рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕реВрдЪрдХ рд╣реИ рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рд░рд╛рдЬреНрдп рдХреЗ рджреВрд╕рд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВред рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рд╡рд╣ рдЖрдВрддрд░рд┐рдХ рд╕реВрдЪрдХ рдЙрдкрдирд╛рдо !

рдореЗрд░реЗ рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрджрд░реНрдн, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдореГрддрд┐ рдХреЗ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреЙрдЗрдВрдЯрд░-рдЯреВ-рдЕрджрд░-рдлреАрд▓реНрдб рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдХреЛрдИ clone рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ рдпрд╛ рддрд╛рдХрд┐ рд╕реНрд╡рдпрдВ-рд╕рдВрджрд░реНрднрд┐рдд рдПрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реВрдЪрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЙрдЗрдВрдЯрд░-рдЯреВ рдлрд╝реАрд▓реНрдб рдХреЛ рдкрдврд╝ рд╕рдХреЗред) рдлрд┐рд░ рднреА, рдпрд╣ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрджрд░реНрдн рдЙрдкрдирд╛рдо рд╣реЛрдиреЗ рдХреЗ рдХрд░реАрдм рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХреЛрд░ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреБрдЫ рдФрд░ рдЬреЛ рд░рд╕реНрдЯ рдХреЗ рд╕рд╛рде рдЬрд╣рд╛рдЬ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдпрд╣рд╛рдВ рдЬрд┐рд╕ "рд▓рд╛рдЗрди" рдХреА рд╕рд╡рд╛рд░реА рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдмрд╣реБрдд рдкрддрд▓реА рд╣реЛ рд░рд╣реА рд╣реИ, рдФрд░ рд╣рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдЗрди рд╕рднреА рдЕрдЪреНрдЫреЗ рдЕрдиреБрдХреВрд▓рди рдХреЛ рди рдЦреЛрдПрдВ рдЬреЛ рд╣рдо рдкрд░рд╕реНрдкрд░ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╢рд╛рдпрдж рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Pin рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд┐рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдпрдореЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ рдФрд░ рдЬреЛ рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреИрдХреНрдб рдмреЙрд░реЛрдЬрд╝ рдЬрдЯрд┐рд▓ рд╣реИрдВ, рддреЛ рд╕реНрдерд┐рддрд┐ рдмрд┐рдЧрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣реЗрдВред

рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ https://github.com/rust-lang/unsafe-code-guidelines/issues/148

рдореЗрд░реЗ рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрджрд░реНрдн, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдореГрддрд┐ рдХреЗ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреЙрдЗрдВрдЯрд░-рдЯреВ-рдЕрджрд░-рдлреАрд▓реНрдб рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред

рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрди рд╕рднреА рдХреЛрд░рдЖрдЙрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ Debug рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдХреЛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рднреА рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рдкреНрд░рд┐рдВрдЯ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рдХреНрдпрд╛ рд╣реИред

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

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред рдРрд╕рд╛ Debug рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдпрджрд┐ рдпрд╣ рд╕реНрд╡-рд╕рдВрджрд░реНрднрд┐рдд рдлрд╝реАрд▓реНрдб рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдВрднрд╡рддрдГ рдЬрдирд░реЗрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдПрдордЖрдИрдЖрд░-рд╕реНрддрд░реАрдп рд╕рдВрджрд░реНрдн-рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдХреВрд▓рди рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрдЧрд╛ред

рдЕрд╡рд░реЛрдзрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрджреНрдпрддрди:

рджреЛ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдЕрд╡рд░реЛрдзрдХреЛрдВ рдиреЗ рдмрд╣реБрдд рдкреНрд░рдЧрддрд┐ рдХреА рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛрдиреЛрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (?) рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ @cramertj @tmandry рдФрд░ @nikomatsakis рд╕реЗ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реЛрдЧреА:

  • рдорд▓реНрдЯреАрдкрд▓ рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо рдЗрд╢реНрдпреВ #61775 . рддрдХ рдареАрдХ рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛
  • рдЖрдХрд╛рд░ рдХрд╛ рдореБрджреНрджрд╛ рдЕрдзрд┐рдХ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ; рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рди рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рдШрд╛рддреАрдп рд╡реГрджреНрдзрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рдХрдо рд▓рдЯрдХреЗ рд╣реБрдП рдлрд▓ рдЬреНрдпрд╛рджрд╛рддрд░ рд╣рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ?

рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рдореБрдЦ рдЕрд╡рд░реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред @Centril рдиреЗ рд▓рдЧрд╛рддрд╛рд░ рдЪрд┐рдВрддрд╛ рд╡реНрдпрдХреНрдд рдХреА рд╣реИ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдпрд╛ рдкреЙрд▓рд┐рд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; @Centril рдХреНрдпрд╛ рдХрд╣реАрдВ рднреА рдЖрдкрдиреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд┐рдВрддрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕реНрдерд┐рд░реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдХреЛрдИ рднреА рдЬреЛ рдкреБрд╕реНрддрдХ, рд╕рдВрджрд░реНрдн, рдЖрджрд┐ рдореЗрдВ рдЗрди-рдЯреНрд░реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╕реБрдзрд╛рд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд╡рд╣ рдПрдХ рдорд╣рд╛рди рд╕реЗрд╡рд╛ рдХрд░ рд░рд╣рд╛ рд╣реЛрдЧрд╛! рдлрд╝реНрдпреВрдЪрд░реНрд╕ рд░реЗрдкреЛ рдпрд╛ areweeasyncyet рдЬреИрд╕реЗ рдЖрдЙрдЯ рдСрдлрд╝ рдЯреНрд░реА рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдордп рд╣реЛрддрд╛ рд╣реИред

рдЖрдЬ рддрдХ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмреАрдЯрд╛ рдХрдЯ рд╣реЛрдиреЗ рддрдХ 6 рд╕рдкреНрддрд╛рд╣ рдХрд╛ рд╕рдордп рд╣реИ, рддреЛ рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 4 рд╕рдкреНрддрд╛рд╣ (1 рдЕрдЧрд╕реНрдд рддрдХ) рд╣реИрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдо 1.38 рдирд╣реАрдВ рдЦрд┐рд╕рдХреЗрдВрдЧреЗред

рдЖрдХрд╛рд░ рдХрд╛ рдореБрджреНрджрд╛ рдЕрдзрд┐рдХ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ; рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рди рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рдШрд╛рддреАрдп рд╡реГрджреНрдзрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рдХрдо рд▓рдЯрдХреЗ рд╣реБрдП рдлрд▓ рдЬреНрдпрд╛рджрд╛рддрд░ рд╣рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ?

рдореИрдВ рдРрд╕рд╛ рдорд╛рдирддрд╛ рд╣реВрдВ, рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдХреЛ рднреА рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛; рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдЕрд╡рд░реБрджреНрдз рдореБрджреНрджреЗ рд╣реИрдВ ред

@Centril рдХреНрдпрд╛ рдХрд╣реАрдВ рднреА рдЖрдкрдиреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд┐рдВрддрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕реНрдерд┐рд░реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдЙрди рдЪреАрдЬреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рдкреЗрдкрд░ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдФрд░ рд╡рд╣рд╛рдВ https://github.com/rust-lang/rust/issues/62121 рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдлрд┐рд░ рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ASAP рдХреЗ рддрд╣рдд рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЕрдм рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХреЛрдИ рднреА рдЬреЛ рдкреБрд╕реНрддрдХ, рд╕рдВрджрд░реНрдн, рдЖрджрд┐ рдореЗрдВ рдЗрди-рдЯреНрд░реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╕реБрдзрд╛рд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд╡рд╣ рдПрдХ рдорд╣рд╛рди рд╕реЗрд╡рд╛ рдХрд░ рд░рд╣рд╛ рд╣реЛрдЧрд╛!

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ; рдореБрдЭреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рд╕рд╛рде рд╣реА cc @ehuss.


рдореИрдВ рдПрдорд╡реАрдкреА рд╕реЗ async unsafe fn рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдлреАрдЪрд░ рдЧреЗрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдП) рдЗрд╕рдХрд╛ рдмрд╣реБрдд рдХрдо рдЙрдкрдпреЛрдЧ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдмреА) рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реА) рдпрд╣ рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ .await рдмрд┐рдВрджреБ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк unsafe { ... } рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ "рд▓реАрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреАрдУрд╡реА" рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдкреНрд░рднрд╛рд╡ рдкреАрдУрд╡реА рд╕реЗ рдЗрддрдирд╛ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдбреА) рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рдХрдо рдЪрд░реНрдЪрд╛ рд╣реБрдИ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЖрд░рдПрдлрд╕реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рди рд╣реА рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ, рдФрд░ рдИ) рд╣рдордиреЗ рдЗрд╕реЗ const fn рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛ред (рдореИрдВ рдлреАрдЪрд░ рдЧреЗрдЯрд┐рдВрдЧ рдкреАрдЖрд░ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ)

рдореИрдВ async unsafe fn рдХреЛ рдЕрд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде рдмрдВрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рджреЗрдирд╛ рдмреБрджреНрдзрд┐рдорд╛рдиреА рд╣реИ!

рдореИрдВрдиреЗ async unsafe fn рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлреАрдЪрд░ рдЧреЗрдЯ рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/rust-lang/rust/issues/62500 рдмрдирд╛рдпрд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рдЕрд╡рд░реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╢рд╛рдпрдж рдПрдХ рдЙрдЪрд┐рдд рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рднреА рдмрдирд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╣рдо async unsafe fn рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдбрд┐рдЬрд╝рд╛рдЗрди рддрдХ рдкрд╣реБрдВрдЪреЗрдВрдЧреЗ рдФрд░ рд╕реНрдерд┐рд░реАрдХрд░рдг рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рджреМрд░ рдореЗрдВ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрдгрдп рд╕реЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реВрдВред рдореИрдВрдиреЗ рдХрдИ async fn s рд▓рд┐рдЦреЗ рд╣реИрдВ рдЬреЛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ async fn really_this_function_is_unsafe() рдпрд╛ рдХреБрдЫ рдФрд░ рдмрдирд╛ рджреЗрдВрдЧреЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдЕрдкреЗрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд╕реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП unsafe { ... } рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдлрд┐рд░ рднреА рдПрдХ рдФрд░ рдлреАрдЪрд░ рдЧреЗрдЯ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдЧрд╛ рдХрд┐ async / await рдЕрдзреВрд░рд╛ рд╣реИред

@cramertj рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП! рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрд╝реВрд▓рд┐рдк рд╡рд┐рд╖рдп рдмрдирд╛рдпрд╛ рд╣реИ , рддрд╛рдХрд┐ рдЗрд╕ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓реЛрдб рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд╕рдХреЗред

рднрд╡рд┐рд╖реНрдп рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ await рдмрд┐рдВрджреБ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЦрд┐рд░реА рд╢реЗрд╖ рдореБрджреНрджрд╛ рдЬреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рд╡рд╣ # 59087 рд╣реИ, рдЬрд╣рд╛рдВ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрд┐рд╕реА рднреА рдЙрдзрд╛рд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдЖрдХрд╛рд░ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╣рдо рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдмреЗрд╣рддрд░ рд╣реИрдВред

рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдпрд╣ рдореЗрд░реЗ рдПрд╣рд╕рд╛рд╕ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рддрдм рддрдХ рдпрд╣ рд╢рд╛рдпрдж рдПрдХ рд╕реНрдерд┐рд░ рдПрдорд╡реАрдкреА рдХреЗ рд▓рд┐рдП рдЕрд╡рд░реЛрдзрдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореБрдЭреЗ рдЕрднреА рднреА рдлреБрдХрд┐рдпрд╛ рдкрд░ рдЗрди рдЕрдиреБрдХреВрд▓рди рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ (рдЬреЛ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЕрд╡рд░реБрджреНрдз рд╣реИ рд▓реЗрдХрд┐рди рдЖрдЬ рдпрд╛ рдХрд▓ рд╕рд╛рдл рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╣рдо рдФрд░ рдорд╛рдорд▓реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ, рдФрд░ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЕрд╡рд░реБрджреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВред

@cramertj (рдЕрдиреБрд╕реНрдорд╛рд░рдХ: рдореИрдВ рдПрд╕рд┐рдВрдХ /рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕реНрдерд┐рд░реАрдХрд░рдг рдореЗрдВ рджреЗрд░реА рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рди рдХрд┐ рдЙрдЪрд┐рдд рдкреНрд░рдпреЛрдЧ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд┐рдирд╛ async unsafe рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЖрд░рдПрдлрд╕реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдФрд░ "рддрд░реНрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛" рд╢рд┐рдЯрд╕реНрдЯреЙрд░реНрдо рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

[рд╕рд╛рдЗрдб рдиреЛрдЯ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ: "рдлрд┐рд░ рднреА рдПрдХ рдФрд░ рдлреАрдЪрд░ рдЧреЗрдЯ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдЧрд╛ рдХрд┐ рдПрд╕рд┐рдВрдХ/рдкреНрд░рддреАрдХреНрд╖рд╛ рдЕрдзреВрд░рд╛ рд╣реИ", рдореБрдЭреЗ рдПрд╕рд┐рдВрдХ/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╣рд░ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ рдПрдХ рдмрдЧ рдорд┐рд▓рд╛ рд╣реИ, рдЬреЛ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдлреИрд▓рддрд╛ рд╣реИ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП rustc рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рд╡реИрдз рд░реВрдк рд╕реЗ рдорд╣реАрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣реА рд╡рд╣ рдЪреАрдЬрд╝ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдХрд╣рддреА рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзреВрд░рд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЛ рдХреБрдЫ рджрд┐рди рдкрд╣рд▓реЗ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдПрдХ рдирдП рд░рд╕реНрдЯрд╕реА рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛, рддреЛ рдореИрдВ рджреВрд╕рд░реЗ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рдитАж]

рдЖрдкрдХрд╛ рддрд░реНрдХ рдПрд╕рд┐рдВрдХ/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕реНрдерд┐рд░реАрдХрд░рдг рдореЗрдВ рджреЗрд░реА рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рди рдХрд┐ рдЙрдЪрд┐рдд рдкреНрд░рдпреЛрдЧ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд┐рдирд╛ рдЕрднреА рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдПрд╕рд┐рдВрдХреНрд╕ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдирд╣реАрдВ, рдпрд╣ рдЙрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ async unsafe рддреИрдпрд╛рд░ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рдбрд┐рдЬрд╛рдЗрди рдХреА рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рди рдХрд░рдиреЗ рдХреЗ рдХреЗрд╡рд▓ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ async / await рдореЗрдВ рджреЗрд░реА рдХрд░рдиреЗ рд╕реЗ, рди рд╣реА async unsafe рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЧрд╛ред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рдбрд┐рдЬрд╛рдЗрди рдХреА рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдбрд┐рдЬрд╝рд╛рдЗрди, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: async unsafe fn unsafe рд╕реЗ .await , рди рдХрд┐ call() ред рдЗрд╕рдХреЗ рдкреАрдЫреЗ рддрд░реНрдХ рдпрд╣ рд╣реИ рдХрд┐ _рдХреБрдЫ рднреА рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛_ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЬрд╣рд╛рдВ async fn рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ impl Future рдмрдирд╛рддрд╛ рд╣реИред рд╡рд╣ рд╕рдм рдХрджрдо рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рднреА async fn рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП const рд╣реИрдВ)ред рдЕрд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрд┐рдВрджреБ рднрд╡рд┐рд╖реНрдп рдХреЛ poll рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рд╛ рд░рд╣рд╛ рд╣реИред

(рдЗрдореНрд╣реЛ, рдпрджрд┐ unsafe рддрддреНрдХрд╛рд▓ рд╣реИ, рддреЛ unsafe async fn рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ unsafe рдореЗрдВ рджреЗрд░реА рд╣реЛ рд░рд╣реА рд╣реИ, рддреЛ async unsafe fn рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред)

рдмреЗрд╢рдХ, рд╣рдо рдХрднреА рдирд╣реАрдВ рдХрд╣рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреИрд╕реЗ unsafe Future рдЬрд╣рд╛рдВ рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ Future рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рддреЛ "рдЙрддреНрдерд╛рдкрди" рдХрд░ рд░рд╣реЗ рд╣реИрдВ unsafe рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП impl Future , рдФрд░ рдЙрд╕ unsafe рдХрд╛ рдЕрдиреБрдмрдВрдз рдкрд░рд┐рдгрд╛рдореА рднрд╡рд┐рд╖реНрдп рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕реЗ unsafe async fn рдмрд┐рдирд╛ рдХреЗрд╡рд▓ "рдбрд┐рд╕реБрдЧрд░рд┐рдВрдЧ" рдХрд░рдХреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ async рдмреНрд▓реЙрдХ: unsafe fn os_stuff() -> impl Future { async { .. } } рдмрд┐рдирд╛ рднреА рд▓рдЧрднрдЧ рддреБрдЪреНрдЫ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рд╢реАрд░реНрд╖ рдкрд░, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдореМрдЬреВрдж рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рдмрд╛рд░ poll рдЖрдИрдПрдирдЬреА рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЖрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рд╕реГрдЬрди рдкрд░ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд░рд╕реНрдЯ рдореЗрдВ рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ (рдЬреИрд╕реЗ Vec::from_raw_parts ) рдХреЗ рд▓рд┐рдП unsafe рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж, _cannot_ рдкреНрд░рдХрд╛рд░ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; unsafe рджрд╛рдпрд░рд╛ рдЦрддреНрдо рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЕрд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рдХрд╛ рдпрд╣ рджрд╛рдпрд░рд╛ рд░рд╕реНрдЯ рдХреА рдЧрд╛рд░рдВрдЯреА рдХреА рдХреБрдВрдЬреА рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ unsafe async fn рдЬреЛ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд impl Future рдХреЛ рдХреНрд░реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХреИрд╕реЗ/рдХрдм рдорддрджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдлрд┐рд░ рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВ, рд╡рд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдЕрдЪрд╛рдирдХ рдЖрдкрдХреЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдмрд╛рдзрд╛ рдХреЗ рдЕрдВрджрд░ рд╣реИред рдФрд░ рдпрд╣ _рдмрд╣реБрдд_ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдЬреИрд╕реЗ рд╣реА рдЖрдк рдЗрд╕ рднрд╡рд┐рд╖реНрдп рдХрд╛ рддреБрд░рдВрдд рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрднрд╡рддрдГ _some_ рдмрд╛рд╣рд░реА рд╕рдВрдпреЛрдЬрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ TL; DR рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ async unsafe fn рдХреЛрдиреЗ рд╣реИрдВ рдЬрд┐рди рдкрд░ рдЗрд╕реЗ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдареАрдХ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ const Trait рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдорд╕реМрджрд╛ рдмреНрд▓реЙрдЧ рд╣реИ рдХрд┐рд╕реА рднреА fn -рдореЙрдбрд┐рдлрд╛рдЗрдВрдЧ рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдЗрд╕реЗ "рдХрдордЬреЛрд░ 'рдкреНрд░рднрд╛рд╡' рдкреНрд░рдгрд╛рд▓реА" рдХреЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, unsafe async fn рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП unsafe рдХреЗ "рдЖрджреЗрд╢"/"рд╕реНрдерд┐рддрд┐" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдПрдХ рдкреНрд░рднрд╛рд╡-рдЖрдзрд╛рд░рд┐рдд unsafe Future рд╡рд┐рд╢реЗрд╖рддрд╛ рди рдХреЗрд╡рд▓ рдЙрд╕ рдЪреАрдЬрд╝ рдХреА рдкрд╣реБрдВрдЪ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЖрдЬ рднрд╛рд╖рд╛ рдпрд╛ рд╕рдВрдХрд▓рдХ рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдпрд╣ рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рднрд╛рд╡ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдЕрдВрддрддрдГ рдПрдХ рдмрджрддрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реЛрдЧрд╛- рдмрд╣реБрд░реВрдкрддрд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдВрдпреЛрдЬрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ async fn рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ impl Future рдмрдирд╛рддрд╛ рд╣реИред рд╡рд╣ рд╕рдм рдХрджрдо рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рднреА async fn рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рд╣реИрдВ)ред рдЕрд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрд┐рдВрджреБ рднрд╡рд┐рд╖реНрдп рдХреЛ рдорддрджрд╛рди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рд╛ рд░рд╣рд╛ рд╣реИред

рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ async fn .await рдПрдб рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдХреЛ рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ, .await рдХреЛ рдХреЙрд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рддрдХ рджреЗрд░реА рд╣реЛ рд╕рдХрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреВрдмреА рдХреЗ рдмрд┐рдВрджреБ рдФрд░ unsafe ty рдХреЗ рдмрд┐рдВрджреБ рдХреЗ рдмреАрдЪ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рд╣реИред unsafe ty рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрд┐рдВрджреБ рд╡рд╣ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдПрдкреАрдЖрдИ рд▓реЗрдЦрдХ рдпрд╣ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рд╡рд╛рджрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЧреИрд░-рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп-рд╕рддреНрдпрд╛рдкрди рдпреЛрдЧреНрдп рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЙрди рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдпреВрдмреА рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдмрд╛рдж рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдореЗрдВред рдЗрд╕рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рдПрдХ unsafe рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдПрдХ рдореВрд▓реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЛрдВ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХреНрдпрд╛ рд╣реИ)ред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Visitor -рдЯреНрд░реЗрдЯ-рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рдХрд╛рд░ рдЬрд┐рдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди unsafe рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП unsafe рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ slice::from_raw_parts рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреЛ рд╕реНрд╡рдпрдВ рдпреВрдмреА рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдиреЗрдЧреА (рд╡реИрдзрддрд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЯрд╛рдЗрдк рдХрд░реЗрдВ), рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдореА рд╕реНрд▓рд╛рдЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреАред

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ async unsafe fn рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рдорд╛рдорд▓реЗ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ-- рдпрд╣ unsafe рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкреАрдЫреЗ unsafe рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред рдирд┐рд░реНрдорд╛рддрд╛ред

@cramertj рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рднреА рджреЗ рд░рд╣реЗ рд╣реИрдВ (рдФрд░ рдореИрдВ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рдПрдХ рдмреБрд░рд╛ рд╣реИ, рдпрд╛ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рд╣реИ) рдХрд╛ рдЕрд░реНрде рд╣реИ, рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдмрд╣рд╕ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдПрдХ рдЬрдВрдЧ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЬрдЧрд╣ рджреЗрдВ: RFC рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАред

рдПрдХ рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕рдХреЗ рд░реАрдбрдореА рд╕реЗ рдПрдХ рдЙрджреНрдзрд░рдг:

рдЖрдкрдХреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ [...] :

  • рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдИ рднреА рдЕрд░реНрдердкреВрд░реНрдг рдпрд╛ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛ рдмрдЧрдлрд┐рдХреНрд╕ рдирд╣реАрдВ рд╣реИред
  • [... рдФрд░ рдЧреИрд░-рдЙрджреНрдзреГрдд рд╕рд╛рдорд╛рди рднреА]

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореМрдЬреВрджрд╛ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рд╣реЛрдЧрд╛ред рджрд░рдЕрд╕рд▓, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдорд┐рдирдЯ рд╕реЛрдЪрдиреЗ рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд╣ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕реЛрдВ рдХреЛ рдЬрдВрдЧ рдХреЗ рд▓рд┐рдП рдЦрддрд░рд╛ рдмрдирдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдФрд░ рд╣рдо рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рдЬреНрдЮрд╛рди рдХреЛ рдпрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ RFC рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкрд╛рд▓рди рди рдХрд░рдХреЗ рд╣рд░ рдПрдХ рдореБрджреНрджреЗ рдХреЛ рдирд╣реАрдВ рдкрдврд╝рддреЗ рд╣реИрдВред

рдХрднреА-рдХрднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкрд╛рд▓рди рди рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореИрдВ рдХреЛрдИ рдЕрддреНрдпрд╛рд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдБ рдХрд┐ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдирджреЗрдЦреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ 2 рд╕рдкреНрддрд╛рд╣ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд░рдВрдЯ рд╣реЛрдЧрд╛ FCP рджреЗрд░реАред

рддреЛ рдХреГрдкрдпрд╛ рд░рд╕реНрдЯ рдХреЛ рдЕрдкрдиреЗ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд░реАрдбрдореА рдореЗрдВ рджрд┐рдП рдЧрдП рд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рджреЗрдВ, рдФрд░ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдПрдХ рдлреАрдЪрд░ рдЧреЗрдЯ рдХреЗ рдиреАрдЪреЗ рддрдм рддрдХ рд░рдЦреЗрдВ рдЬрдм рддрдХ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕реНрд╡реАрдХреГрдд RFC рди рд╣реЛ рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЬрдВрдЧрд▓реА рдореЗрдВ рдЗрд╕рдХрд╛ рдХреБрдЫ рдФрд░ рдЙрдкрдпреЛрдЧ рд╣реЛред рдЪрд╛рд╣реЗ рд╡рд╣ рд╕рдВрдкреВрд░реНрдг async/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдЧреЗрдЯ рд╣реЛ рдпрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд-async рд╕реБрд╡рд┐рдзрд╛ рдЧреЗрдЯ рд╣реЛ, рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╕ рдЙрд╕ рдЪреАрдЬрд╝ рдХреЛ рд╕реНрдерд┐рд░ рди рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ (AFAIK) async-wg рд╕реЗ рдкрд░реЗ рдмрд╣реБрдд рдХрдо рдЙрдкрдпреЛрдЧ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реЛ рдФрд░ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрдореБрд╢реНрдХрд┐рд▓ рд╣реА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реЛ рд╕рдордЧреНрд░ рд╕рдореБрджрд╛рдпред

рдореИрдВ рдкреБрд╕реНрддрдХ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рд╕рд╛рдордЧреНрд░реА рдкрд░ рдкрд╣рд▓рд╛ рдкрд╛рд╕ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВред рд░рд╛рд╕реНрддреЗ рдореЗрдВ, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ async-wait RFC рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ ? рдСрдкрд░реЗрдЯрд░ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрднреА рддрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рднреА рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдПрд╕рд┐рдВрдХ рдмреНрд▓реЙрдХ ( рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди ) рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдореЗрдВ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдлреАрдЪрд░ рдЧреЗрдЯ рдкрд░ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╛ рдпрд╣ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛? рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрдерд┐рд░реАрдХрд░рдг рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдореИрдВ рдЪреВрдХ рдЧрдпрд╛ред

(рдореИрдВрдиреЗ рдпрд╣ рдкреНрд░рд╢реНрди рдЬрд╝реВрд▓рд┐рдк рдкрд░ рднреА рдкреВрдЫрд╛ рдерд╛ рдФрд░ рдореИрдВ рд╡рд╣рд╛рдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛

рд╣рд╛рдВ, return , break , continue et рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдФрд░ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЕрд▓. рдЬреЛ рд╕рднреА "рдПрдХрдорд╛рддреНрд░ рд╕рдВрднрд╡ рдХрд╛рдо" рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдмрдВрдж рдХреЗ рдЕрдВрджрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

let f = unsafe { || {...} }; рднреА рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдФрд░ IIRC рдпрд╣ unsafe рдХреЛ рдХреНрд▓реЛрдЬрд░ рдХреЗ рдЕрдВрджрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред
unsafe fn foo() -> impl Fn() { || {...} } рд▓рд┐рдП рд╡рд╣реА рдмрд╛рддред

рдпрд╣, рдореЗрд░реЗ рд▓рд┐рдП, " unsafe рджрд╛рдпрд░реЗ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЪреАрдЬ рд╣реЛрддреА рд╣реИ" рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЙрджрд╛рд╣рд░рдг рд╣реИред

рдпрд╣реА рд╣рд╛рд▓ рдЕрдиреНрдп рдЬрдЧрд╣реЛрдВ рдХрд╛ рднреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, unsafe рд╣рдореЗрд╢рд╛ рд╡рд╣ рдирд╣реАрдВ рд╣реЛрддрд╛ рдЬрд╣рд╛рдВ рд╕рдВрднрд╛рд╡рд┐рдд UB рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг:

    let mut vec: Vec<u32> = Vec::new();

    unsafe { vec.set_len(100); }      // <- unsafe

    let val = vec.get(5).unwrap();     // <- UB
    println!("{}", val);

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреА рдЧрд▓рддрдлрд╣рдореА рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ - рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдпрд╣ рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ "рдпрд╣рд╛рдВ рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдСрдкрд░реЗрд╢рди рд╣реЛрддрд╛ рд╣реИ" - рдпрд╣ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ "рдореИрдВ рдЧрд╛рд░рдВрдЯреА рджреЗ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рдЖрд╡рд┐рд╖реНрдХрд╛рд░реЛрдВ рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрддрд╛ рд╣реВрдВред" рдЬрдмрдХрд┐ рдЖрдк рдкреНрд░рддреАрдХреНрд╖рд╛ рдмрд┐рдВрджреБ рдкрд░ рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рдмрдирд╛рдП рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЪрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЬрд╛рдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╕рд╛рдЗрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдк рдХреЙрд▓ рд╕рд╛рдЗрдЯ рдкрд░ рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рд╕рднреА рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕рдВрдЧрдд рд╣реИред

рдпрд╣ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ рдХрд┐ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛ рдПрдХ рдкреНрд░рднрд╛рд╡ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪрдиреЗ рд╕реЗ рдЧрд▓рдд рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рд░рд╛рд▓реНрдл рдиреЗ рддрд░реНрдХ рджрд┐рдпрд╛ рдерд╛ рдЬрдм рдЙрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЬрд╛рдирдмреВрдЭрдХрд░, рд╕рдВрдХреНрд░рд╛рдордХ рдирд╣реАрдВ рд╣реИред рдЬрдмрдХрд┐ рдЖрдк рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рдВрд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдкрд░ рдЙрдирдХреЗ рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдкрд░ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдорд╛рд░реНрдХрд░ рд╣реИред рддреБрдо рдЙрдирдХрд╛ рдкрд╛рд▓рди рдХрд░реЛред

рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд┐рд░реНрдгрдп рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг RFC рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯрддрд╛ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рдЕрдВрдХ рдХреЗ рдЙрджреНрдШрд╛рдЯрди рдореЗрдВ рдкреНрд░рдореБрдЦ рдирд┐рд░реНрдгрдп рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕реВрдЪреА рдЙрд╕реА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд async fns рдХреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рд╕рдВрд░рдЪрд┐рдд рдЖрдо рд╕рд╣рдорддрд┐ рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рд╕реНрдЯреИрдм рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рдкреЛрд╕реНрдЯ рд╣реИред

async unsafe fn

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

  1. рдпрд╣ рдЧреИрд░-async рдЕрд╕реБрд░рдХреНрд╖рд┐рдд fns рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ, рдЬреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рднреА рд╣реИрдВред
  2. рдпрд╣ рдЕрдзрд┐рдХ рд╕рдВрдЧрдд рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдп рдПрдХ рдЕрдореВрд░реНрдд рд╣реИ рдЬреЛ рдХреБрдЫ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рдХреЙрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ "рдЬрд╣рд╛рдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдЪрд╛рд▓рди рд╣реЛрддрд╛ рд╣реИ" рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди "рдЬрд╣рд╛рдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред" рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЕрдзрд┐рдХ рд╕рдордЭрджрд╛рд░ рд╣реИ рдХрд┐ рдХреЙрд▓ рд╕рд╛рдЗрдЯ рдкрд░ рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рддрд░реНрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ, рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рд╛рдЗрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдЬрдм рддрд░реНрдХреЛрдВ рдХрд╛ рдЪрдпрди рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдЬреЛ рдЕрдХреНрд╕рд░ рдХреБрдЫ рд░рд╛рдЬреНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреНрдп, рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдп рд╕рд╣реА рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ
  3. рдпрд╣ рдПрд╕рд┐рдВрдХреНрд╕ рдПрдлрдПрди рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдХреА рдбрд┐рд╕реБрдЧрд░рд┐рдВрдЧ рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдХреЛ рдПрд╕рд┐рдВрдХреНрд╕ рдореЙрдбрд┐рдлрд╛рдпрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд░рд┐рдЯрд░реНрди рдЯрд╛рдЗрдк рдХреЛ рд░реИрдк рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рдореЙрдбрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  4. рд╡рд┐рдХрд▓реНрдк рдирд┐рдХрдЯ рдпрд╛ рдордзреНрдпрдо рдЕрд╡рдзрд┐ (рдЕрд░реНрдерд╛рддреН рдХрдИ рд╡рд░реНрд╖реЛрдВ) рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд░рд╕реНрдЯ рднрд╛рд╖рд╛ рдореЗрдВ рдорддрджрд╛рди рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рднрд╡рд┐рд╖реНрдп рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рднрд╛рд╡ рдХреЗ рд░реВрдк рдореЗрдВ" рдПрдХ рдмрдбрд╝рд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рджреВрд░рдЧрд╛рдореА рдкреНрд░рднрд╛рд╡ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдпрд╣ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝рд╛ рдХреИрд╕реЗ рд╕рдВрдЧрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдЬ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ (рдЬреИрд╕реЗ, рд╕рд╛рдорд╛рдиреНрдп рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдп рдФрд░ рдмреНрд▓реЙрдХ)ред рдПрд╕рд┐рдВрдХреНрд╕ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдПрдлрдПрдирдПрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреА рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рддрд╣рдд рдПрд╕рд┐рдВрдХреНрд╕ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдПрдлрдПрдирдПрд╕ рдореЗрдВ рдирд┐рдХрдЯ рдФрд░ рдордзреНрдпрдо рдЕрд╡рдзрд┐ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВред

@rfcbot рдиреЗ рд▓реИрдВрдЧ рд╕реЗ рдкреВрдЫрд╛ "рдХреНрдпрд╛ рд╣рдо async рдЕрд╕реБрд░рдХреНрд╖рд┐рдд fn рдХреЛ async fn рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд┐рд░ рдХрд░рдирд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ?"

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ rfcbot рдХреЗ рд╕рд╛рде рдорддрджрд╛рди рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрдо рд╕реЗ рдХрдо рдирд╛рдорд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп @withboats рдиреЗ рдЯреАрдореЛрдВ рд╕реЗ рдкреВрдЫрд╛ рд╣реИ: рдЯреА-рд▓реИрдВрдЧ, рдЗрд╕ рдкрд░ рдЖрдо рд╕рд╣рдорддрд┐ рдХреЗ рд▓рд┐рдП:

"рдХреНрдпрд╛ рд╣рдо рдПрд╕рд┐рдВрдХреНрд╕ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдПрдлрдПрди рдХреЛ рдПрд╕рд┐рдВрдХреНрд╕ рдПрдлрдПрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд┐рд░ рдХрд░рдирд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ?"

  • [x] @рд╕реЗрдВрдЯреНрд░рд┐рд▓
  • [рдПрдХреНрд╕] @ рдХреНрд░реИрдорд░реНрдЯрдЬ
  • [x] @eddyb
  • [ ] @joshtriplett
  • [x] @nikomatsakis
  • [ ] @pkfelix
  • [ ] @scottmcm
  • [x] @ рдирд╛рд╡реЛрдВ рдХреЗ рдмрд┐рдирд╛

@ рдирд╛рд╡реЛрдВ рдХреЗ рдмрд┐рдирд╛

рдореИрдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд async fns рдХреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рд╕рдВрд░рдЪрд┐рдд рдЖрдо рд╕рд╣рдорддрд┐ рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рд╕реНрдЯреИрдм рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рдкреЛрд╕реНрдЯ рд╣реИред

рдЕрджреНрдпрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЪрд░реНрдЪрд╛ рдиреЗ рдореБрдЭреЗ рдЖрд╢реНрд╡рд╕реНрдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ async unsafe fn рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЖрдЬ рд░рд╛рдд рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред (рд╢рд╛рдпрдж рдХреБрдЫ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд┐рд░рд▓ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред) рд╕рд╛рде рд╣реА, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдкрдиреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд╕рд╛рде рд╢реАрд░реНрд╖ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рд╕рдВрд╢реЛрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ + async unsafe fn рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг?

рдпрд╣ рдЕрдзрд┐рдХ рд╕рдВрдЧрдд рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдп рдПрдХ рдЕрдореВрд░реНрдд рд╣реИ рдЬреЛ рдХреБрдЫ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рдХреЙрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ "рдЬрд╣рд╛рдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдЪрд╛рд▓рди рд╣реЛрддрд╛ рд╣реИ" рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди "рдЬрд╣рд╛рдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред" рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЕрдзрд┐рдХ рд╕рдордЭрджрд╛рд░ рд╣реИ рдХрд┐ рдХреЙрд▓ рд╕рд╛рдЗрдЯ рдкрд░ рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рддрд░реНрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ, рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рд╛рдЗрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдЬрдм рддрд░реНрдХреЛрдВ рдХрд╛ рдЪрдпрди рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдЬреЛ рдЕрдХреНрд╕рд░ рдХреБрдЫ рд░рд╛рдЬреНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреНрдп, рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдп рд╕рд╣реА рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ

рдЬреИрд╕рд╛ рдХрд┐ рдХреЛрдИ рдмрд╣реБрдд рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдФрд░ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдорд╛рдзрд╛рди рдЕрдЪреНрдЫрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИред

рдореИрдВ рдпрд╣рд╛рдВ рдирд┐рд╢рд╛рди рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП

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

рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддреАрдХреНрд╖рд╛рд░рдд рдЙрдкрдпреЛрдЧ/рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдПрдХ рдмреБрд░реЗ рд╡рд┐рдЪрд╛рд░ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд╢рд╛рд╕рди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред

рдпрджрд┐ рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдореВрд▓реНрдп рд╡рд╣ рд╣реИ рдЬреЛ рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд░реИрдкрд░ рд╣реИ рдЬрд┐рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ

struct UnsafeOutput<T>(T);
impl<T> UnsafeOutput<T> {
    unsafe fn unwrap(self) -> T { self.0 }
}

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ unsafe рдиреЗрд╕ рдЗрд╕ "рд╢реБрд░реБрдЖрддреА рдЕрд╕реБрд░рдХреНрд╖рд┐рдд" рдореЗрдВ async рдиреЗрд╕ рд╕реЗ рдкрд╣рд▓реЗ рд╣реИ, рдореБрдЭреЗ рд╕рдВрд╢реЛрдзрдХ рдСрд░реНрдбрд░ unsafe async fn рд╕реЗ async unsafe fn unsafe async fn рд╣реЛрдиреЗ рд╕реЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреА async unsafe fn , рдХреНрдпреЛрдВрдХрд┐ unsafe (async fn) рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ async (unsafe fn) рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдпрд╛ рддреЛ рдЦреБрд╢реА-рдЦреБрд╢реА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рджреГрдврд╝рддрд╛ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд░реИрдкрд┐рдВрдЧ рдСрд░реНрдбрд░ рдореЗрдВ рдмрд╛рд╣рд░ рдХреА рддрд░рдл unsafe , рдФрд░ рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдХреНрд░рдо рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред ( unsafe async fn рдХрд╛ рд╕рдВрд╢реЛрдзрдХ рд╣реИ, рди рдХрд┐ async рдХрд╛ рд╕рдВрд╢реЛрдзрдХ unsafe fn ред)

рдореИрдВ рдпрд╛ рддреЛ рдЦреБрд╢реА-рдЦреБрд╢реА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рджреГрдврд╝рддрд╛ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдП рдЧрдП рд░реИрдкрд┐рдВрдЧ рдСрд░реНрдбрд░ рдореЗрдВ рдмрд╛рд╣рд░ рдХреА рддрд░рдл unsafe , рдФрд░ рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдХреНрд░рдо рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред ( unsafe рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрдХ рд╣реИ async fn , рдирд╣реАрдВ async рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрд░рд┐рд╡рд░реНрддрдХ unsafe fn ред)

рдореИрдВ рдЖрдкрдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдмрд┐рдВрджреБ рддрдХ рдЖрдкрдХреЗ рд╕рд╛рде рдерд╛ред @withboats 'рд▓реЗрдЦрди рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐, рдпрджрд┐ рдХреЙрд▓ рд╕рд╛рдЗрдЯ рдкрд░ рдЕрд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рд╕реЗ рдирд┐рдкрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ unsafe fn (рдЬрд┐рд╕реЗ async рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╣рдо рдмрд╛рдЗрдХрд╢реЗрдб рдХреЛ рдкреЗрдВрдЯ рдХрд░рддреЗ рд╣реИрдВ async unsafe fn ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ async unsafe fn рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрд╕рд┐рдВрдХ, рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдХреЙрдиреНрд╕реНрдЯ рдХреЗ рдмреАрдЪ рдХрд┐рд╕реА рднреА рдЖрджреЗрд╢ рдХреЛ рд╡реНрдпрд╛рдХрд░рдгрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди async unsafe fn рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрд╕рд┐рдВрдХ рдХреЛ рдкрдЯреНрдЯреА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХреЛ "рдбрд┐рд╕реБрдЧрд░" рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╡рд┐рдХрд▓реНрдк рдирд┐рдХрдЯ рдпрд╛ рдордзреНрдпрдо рдЕрд╡рдзрд┐ (рдЕрд░реНрдерд╛рддреН рдХрдИ рд╡рд░реНрд╖реЛрдВ) рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд░рд╕реНрдЯ рднрд╛рд╖рд╛ рдореЗрдВ рдорддрджрд╛рди рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рднрд╡рд┐рд╖реНрдп рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ рдореИрдВ рдПрдХ рдРрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ unsafe fn рдФрд░ рдлрд╝рдВрдХреНрд╢рди рд▓рдХреНрд╖рдгреЛрдВ рдХреЗ рдЕрдВрджрд░ рдмрдВрдж рд╣реЛрдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИред рдореИрдВ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереА unsafe async fn рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Future рдПрдХ рддрд┐рдЬреЛрд░реА рдХреЗ рд╕рд╛рде poll рд╡рд┐рдзрд┐, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП UnsafeFuture рдПрдХ рд╕рд╛рде unsafe рдорддрджрд╛рди рд╡рд┐рдзрд┐ред (*) рддрдм рд╣рдо .await рдХреЛ UnsafeFuture s рдкрд░ рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рдереЗ рдЬрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ unsafe { } рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдЬ рдЬреЛ рдХреБрдЫ рд╣реИ, рдЙрд╕рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдпреЗ рджреЛ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рдХреНрд╖рдг рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рд╣реЛрдВрдЧреЗ, рдФрд░ рд╡реЗ рд╢рд╛рдпрдж рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрдВрдкреЛрдЬрд┐рдмрд┐рд▓рд┐рдЯреА рдореБрджреНрджреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░реЗрдВрдЧреЗред рддреЛ рд╡рд┐рдХрд▓реНрдк рддрд▓рд╛рд╢рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдЬ рд╢рд╛рдпрдж рд░рд╡рд╛рдирд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЪреВрдВрдХрд┐ рдпрд╣ рдЕрд▓рдЧ рд╣реЛрдЧрд╛ рдХрд┐ Fn рд▓рдХреНрд╖рдг рдЖрдЬ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ UnsafeFn рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╛ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ, рдФрд░ RFC2585 рдореЗрдВ рдореЗрд░рд╛ рдореБрджреНрджрд╛ unsafe fn рдЕрдВрджрд░ рдПрдХ рдХреНрд▓реЛрдЬрд░ рдмрдирд╛рдирд╛ impls Fn() , рдпрд╛рдиреА рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рдХреНрд▓реЛрдЬрд░ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

"рдЕрд╕реБрд░рдХреНрд╖рд┐рдд" рднрд╡рд┐рд╖реНрдп рдмрдирд╛рдирд╛ рдпрд╛ рдмрдВрдж рдХрд░рдирд╛ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдмреБрд▓рд╛ рд░рд╣реА рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░ рдпрд╣ рдирд╣реАрдВ рдХрд╣рддреЗ рдХрд┐ рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

(*) рд╣рдо рд╕рднреА Future s рдХреЗ рд▓рд┐рдП UnsafeFuture рдХрд╛ рдПрдХ рдмреНрд▓реИрдВрдХреЗрдЯ рдЗрдореНрдкреНрд▓рд╛рдВрдЯ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рд╕реНрд╡рдпрдВ рдХреЛ "рдЕрдирд░реИрдк" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП UnsafeFuture рдПрдХ unsafe рд╡рд┐рдзрд┐ рднреА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ Future рдХрд┐ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ poll ред

рдпрд╣рд╛рдБ рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ рд╣реИрдВ:

  • @cramertj рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ (https://github.com/rust-lang/rust/issues/62149#issuecomment-510166207) рдореБрдЭреЗ рдЖрд╢реНрд╡рд╕реНрдд рдХрд░рддреА рд╣реИ рдХрд┐ unsafe async рдлрд╝рдВрдХреНрд╢рди рд╕рд╣реА рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реИрдВред
  • рдореИрдВ unsafe рдФрд░ async . рдХреАрд╡рд░реНрдб рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд░рдо рдХреЛ рдмрд╣реБрдд рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ
  • рдореИрдВ unsafe async fn рдСрд░реНрдбрд░ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдСрд░реНрдбрд░рд┐рдВрдЧ рдЕрдзрд┐рдХ рддрд╛рд░реНрдХрд┐рдХ рд▓рдЧрддреА рд╣реИред "рдПрдХ рддреЗрдЬ рдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХ рдХрд╛рд░" рдмрдирд╛рдо "рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХ рдлрд╛рд╕реНрдЯ рдХрд╛рд░" рдХреЗ рд╕рдорд╛рдиред рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВрдХрд┐ async fn рдПрдХ fn рд▓рд┐рдП desugarsред рддреЛ, рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рджреЛ рдХреАрд╡рд░реНрдб рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ let f = unsafe { || { ... } } рдХреЛ f рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ UnsafeFn рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдХрднреА рднреА рдкреЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ .await рдЖрдИрдПрдирдЬреА рдФрд░ async unsafe fn рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рддред рдХрд┐рд╕реА рднреА UnsafeFuture рдХреЛ рдордЬрдмреВрдд рдФрдЪрд┐рддреНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!

рдпрд╣ рд╕рдм рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ unsafe рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЬрдВрдЧ рдЖрдкрдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рднреВрдорд┐ рдкрд░ рд╡рд╛рдкрд╕ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд╛рде рд╣реА рдЗрд╕ рдЯреЛрдХрди рджреНрд╡рд╛рд░рд╛ f рдХреЗ ... рдХреЛ _not_ рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдмреНрд▓реЙрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, https://github.com/rust-lang/rfcs/pull/2585 рдХреЛ рдЕрдкрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ async unsafe fn рд╕реБрд░рдХреНрд╖рд┐рдд рд╢рд░реАрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрд▓реЛрдЬрд░ рдХреЗ рд▓рд┐рдП рдХреИрдкреНрдЪрд░ рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдХрднреА рднреА рдмреЙрд░реЛ рдЪреЗрдХрд░ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рддреЛ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдпрд╣рд╛рдБ: https://github.com/rust-lang/rust/issues/62149#issuecomment -511116357 рдПрдХ рдмрд╣реБрдд рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рдПрдХ UnsafeFuture рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рд░ рдХреЛ рднрд╡рд┐рд╖реНрдп рдХрд╛ рдЪреБрдирд╛рд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП unsafe { } рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдлрд┐рд░ рднреА рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдХреМрди рд╕реЗ рджрд╛рдпрд┐рддреНрд╡реЛрдВ рдХреЛ рд╕рд┐рджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ Box<dyn UnsafeFuture> unsafe { future.poll() } рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ? рд╕рднреА рд╡рд╛рдпрджрд╛ рдХреЗ рд▓рд┐рдП? рдЖрдк рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддреЗред рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ @rpjohnst рдиреЗ рдПрдХ рд╕рдорд╛рди UnsafeFn рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдХрд▓рд╣ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ред

рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдорддрджрд╛рди рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИ, рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬреЛ рдорддрджрд╛рди рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИ; рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ async unsafe fn рд╣реИред рд▓реЗрдХрд┐рди рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, fn рдЖрдЗрдЯрдо рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдмрд░рдХрд░рд╛рд░ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд▓реМрдЯрд╛ рд╣реБрдЖ рднрд╡рд┐рд╖реНрдп рдорддрджрд╛рди рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛред

@rfcbot рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди-рдХрд╛рд░реНрдп-рдЕрд╡рд░реБрджреНрдз-рд╕реНрдерд┐рд░реАрдХрд░рдг

рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдЕрднреА рднреА 2 рдЬреНрдЮрд╛рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрд╡рд░реЛрдзрдХ рд╣реИрдВ (https://github.com/rust-lang/rust/issues/61949, https://github.com/rust-lang/rust/issues/62517) рдФрд░ рдпрд╣ рд╣реЛрдЧрд╛ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдЕрдЪреНрдЫрд╛ рд╣реИред рдореИрдВ rfcbot рдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рд╣рдорд╛рд░рд╛ рдЕрд╡рд░реЛрдзрдХ рдирд╣реАрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЪрд┐рдВрддрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реБрдзрд╛рд░реЛрдВ рдХреЛ рд░реЛрдХ рджреЗрдВрдЧреЗред

@rfcbot рд╕рдорд╛рдзрд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди-рдХрд╛рд░реНрдп-рдЕрд╡рд░реБрджреНрдз-рд╕реНрдерд┐рд░реАрдХрд░рдг

:рдШрдВрдЯреА: рдЙрдкрд░реЛрдХреНрдд рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдЕрдм рдЕрдкрдиреА рдЕрдВрддрд┐рдо рдЯрд┐рдкреНрдкрдгреА рдЕрд╡рдзрд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ ред рдШрдВрдЯреА:

https://github.com/rust-lang/rust/pull/63209 рдореЗрдВ рд╕реНрдерд┐рд░реАрдХрд░рдг рдкреАрдЖрд░ рджрд╛рдпрд░ рдХрд┐рдпрд╛

рдЙрдкрд░реЛрдХреНрдд рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡рд┐рд▓рдп рдХреЗ рд╕реНрд╡рднрд╛рд╡ рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рдЯрд┐рдкреНрдкрдгреА рдЕрд╡рдзрд┐ рдЕрдм рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ ред

рд╢рд╛рд╕рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рд▓реЗрдЦрдХ рдХреЛ рдЙрдирдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдФрд░ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЖрд░рдПрдлрд╕реА рдХрд╛ рдЬрд▓реНрдж рд╣реА рд╡рд┐рд▓рдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкрд╣рд▓реВ рдЬреЛ рд╣рдо рдпрд╣рд╛рдВ рд╕реНрдерд┐рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рд╕реЗ рд╕реЗрд▓реНрдл-рд░реЗрдлрд░реЗрдВрд╢рд┐рдпрд▓ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдЬреЛ рджрд┐рд▓рдЪрд╕реНрдк рдмрдирд╛рддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдкрд┐рди<&рдореНрдпреВрдЯ рд╕реЗрд▓реНрдл рд░реЗрдлрд░реЗрдВрд╢рд┐рдпрд▓ рдЬреЗрдирд░реЗрдЯрд░> рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрджрд░реНрдн (рдкрд┐рди рдореЗрдВ рдПрдХ рдлрд╝реАрд▓реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд) рд╣реИ рдЬреЛ рдкреВрд░реЗ рдЬрдирд░реЗрдЯрд░ рд░рд╛рдЬреНрдп рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрд╕ рд░рд╛рдЬреНрдп рдХреЗ рдЕрдВрджрд░ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд░рд╛рдЬреНрдп рдХреЗ рджреВрд╕рд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред . рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рд╡рд╣ рдЖрдВрддрд░рд┐рдХ рд╕реВрдЪрдХ рдЙрдкрдирд╛рдо!

рдЗрд╕рдХреЗ рдЕрдиреБрд╡рд░реНрддреА рдХреЗ рд░реВрдк рдореЗрдВ, @comex рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ (рд╕реБрд░рдХреНрд╖рд┐рдд) async рд░рд╕реНрдЯ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

dwrensha picture dwrensha  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mcarton picture mcarton  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

defuz picture defuz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jmegaffin picture jmegaffin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tikue picture tikue  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ