рд╕реНрдерд┐рд░реАрдХрд░рдг рд▓рдХреНрд╖реНрдп: 1.38.0 (рдмреАрдЯрд╛ рдХрдЯ 2019-08-15)
рдпрд╣ рдПрдХ рдиреНрдпреВрдирддрдо рд╡реНрдпрд╡рд╣рд╛рд░реНрдп async/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
async
рдПрдиреЛрдЯреЗрд╢рди, рдЬрд┐рд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдореВрд▓реНрдпрд╛рдВрдХрди рдореЗрдВ рджреЗрд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рднрд╡рд┐рд╖реНрдп рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредawait
рдСрдкрд░реЗрдЯрд░, рдЬреЛ рдХреЗрд╡рд▓ async
рд╕рдВрджрд░реНрдн рдореЗрдВ рдорд╛рдиреНрдп рд╣реИ, рдЬреЛ рднрд╡рд┐рд╖реНрдп рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдмрд╛рд╣рд░реА рднрд╡рд┐рд╖реНрдп рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдкреВрд░реА рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреА рд╣реИредрдЖрд░рдПрдлрд╕реА:
std::task
рдФрд░ std::future::Future
рд╕реНрдерд┐рд░ рдХрд░реЗрдВрдЯреНрд░реИрдХрд┐рдВрдЧ рдореБрджреНрджреЗ:
рд╕реНрдерд┐рд░реАрдХрд░рдг:
return
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИредexpression.await
, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп await expression
рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИредasync
рдФрд░ await
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TLS рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрдерд┐рд░реАрдХрд░рдг рдХреЛ рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕реЗ рдЕрдВрддрддрдГ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИредasync
рдХреНрд▓реЛрдЬрд░ рд▓рд┐рдЯрд░рд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣рд╛рдБ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИред рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рд╕рд╛рде рдПрд╕рд┐рдВрдХреНрд╕ рдХреНрд▓реЛрдЬрд░ рдкрд░ рдХреИрдкреНрдЪрд░ рдФрд░ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдзрд┐рдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛рд░реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИредрдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз IO рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЙрддреНрдкрд╛рджрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реБрдЪрд┐ рдХреЗ рд╕рд╛рде рдЬрдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдХреНрд╖реНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдЖрдИрдУ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЬрдВрдЧ рдХрд╛ рд▓рдХреНрд╖реНрдп рд░рд╣рд╛ рд╣реИред рдПрд╕рд┐рдВрдХреНрд╕/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдЙрд╕ рдкреНрд░рдпрд╛рд╕ рдХреА рдкрд░рд┐рдгрддрд┐ рд╣реИред
1.0 рд╕реЗ рдкрд╣рд▓реЗ, рд░рд╕реНрдЯ рдореЗрдВ рдПрдХ рдЧреНрд░реАрдирдереНрд░реЗрдбрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдерд╛, рдЬрд┐рд╕рдореЗрдВ рд░рд╕реНрдЯ рдиреЗ рдиреЙрди-рдмреНрд▓реЙрдХрд┐рдВрдЧ IO рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдирд┐рд░реНрдорд┐рдд рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ, рднрд╛рд╖рд╛-рд╕реНрддрд░реАрдп рдереНрд░реЗрдбрд┐рдВрдЧ рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдиреЗ рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХреАрдВ: рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рднрд╛рд╖рд╛ рд░рдирдЯрд╛рдЗрдо рд╢реБрд░реВ рдХрд░рдирд╛ рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдПрдлрдПрдлрдЖрдИ рдХреЗ рдКрдкрд░реА рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЧреНрд░реАрдирдереНрд░реЗрдб рд╕реНрдЯреИрдХреНрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдХрдИ рдкреНрд░рдореБрдЦ рдЕрдирд╕реБрд▓рдЭреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред .
рдЧреНрд░реАрдирдереНрд░реЗрдбреНрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд░рд╕реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдиреЗ рдлреНрдпреВрдЪрд░реНрд╕ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдХрднреА-рдХрднреА рд╡рд╛рджреЗ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╛рдпрджрд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдЖрдИрдУ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп-рдЖрдзрд╛рд░рд┐рдд рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╣реБрдд рд╕рдлрд▓ рд░рд╣рд╛ рдерд╛, рдФрд░ рдпрд╣ рдЬреНрдЮрд╛рдд рдерд╛ рдХрд┐ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрд╕рд┐рдВрдХ/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдореИрдк рдХрд┐рдпрд╛ рдерд╛ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдорд╛рдореВрд▓реА рд░реВрдк рд╕реЗ рдХрдо рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛ рд╕рдХрддрд╛ рдерд╛ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрджреГрд╢реНрдп рдЧреНрд░реАрдирдереНрд░реЗрдбрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдоред
рдлреНрдпреВрдЪрд░ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдкреНрд░рдореБрдЦ рд╕рдлрд▓рддрд╛ рдлреНрдпреВрдЪрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкреЛрд▓-рдЖрдзрд╛рд░рд┐рдд рдореЙрдбрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдереАред рдЬрдмрдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдВ рдХреЙрд▓рдмреИрдХ рдЖрдзрд╛рд░рд┐рдд рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рднрд╡рд┐рд╖реНрдп рд╕реНрд╡рдпрдВ рдХреЙрд▓рдмреИрдХ рдХреЛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрдбреНрдпреВрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рд░рд╕реНрдЯ рдПрдХ рдкреЛрд▓ рдЖрдзрд╛рд░рд┐рдд рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрдХ рднрд╡рд┐рд╖реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗрд╡рд▓ рдирд┐рд╖реНрдкрд╛рджрдХ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рд╡реЗрдХрд░ рдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдЗрд╕ рдореЙрдбрд▓ рдиреЗ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛:
(рдЕрдВрддрд┐рдо рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреНрд░рдо рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдкрд╣рдЪрд╛рдирд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рд╕рддреНрдп рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЙрди рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд╛рдПрдВ рд▓рд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпреЗ рдЧреБрдг рджреЛрдиреЛрдВ рдорддрджрд╛рди-рдЖрдзрд╛рд░рд┐рдд рдореЙрдбрд▓ рдХреЗ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рдЧреБрдг рд╣реИрдВред рдЬрд┐рд╕рдХреЗ рдЕрдиреНрдп рд╕реНрдкрд╖реНрдЯ рд▓рд╛рдн рд╣реИрдВ рдФрд░, рд╣рдорд╛рд░реА рд░рд╛рдп рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрдиреНрд╣реЗрдВ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рдж рд▓рд╛рднрдХрд╛рд░реА рдЧреБрдг рд╣реИрдВред)
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреЛрд▓-рдЖрдзрд╛рд░рд┐рдд рдореЙрдбрд▓ рдХреЛ рдЧрдВрднреАрд░ рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдЬрдм рдЙрд╕рдиреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА; рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдЙрдкрдЬ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдиреЗ рдЕрдирд╕реБрд▓рдЭреЗ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛, рднрд▓реЗ рд╣реА рд╡реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдВред рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЖрд░реНрдХреНрд╕, рдореНрдпреВрдЯреЗрдХреНрд╕ рдФрд░ рдореВрд╡ рдХреНрд▓реЛрдЬрд░ рд╕реЗ рднрд░рд╛ рдЬрдЯрд┐рд▓, рд╢реЛрд░ рдХреЛрдб рд╣реБрдЖ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рдЦреНрддреА рд╕реЗ рдЬрд░реВрд░реА рдирд╣реАрдВ рдерд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рддрд░рдл рд░рдЦрддреЗ рд╣реБрдП, рднрд╛рд╖рд╛ рд╕реНрддрд░ рдЖрджрд┐рдо рдХреЗ рдмрд┐рдирд╛, рдлреНрдпреВрдЪрд░реНрд╕ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрддреНрдпрдзрд┐рдХ рдиреЗрд╕реНрдЯреЗрдб рдХреЙрд▓рдмреИрдХ рд▓рд┐рдЦрдиреЗ рдХреА рд╢реИрд▓реА рдореЗрдВ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рд╣рдордиреЗ рдЙрдкрдЬ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде async/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЪреАрдиреА рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ред Pin
рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬрд┐рд╕рдиреЗ рдпреАрд▓реНрдб рдкреЙрдЗрдВрдЯреНрд╕ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛ рджрд┐рдпрд╛, рд╣рдордиреЗ рдПрдХ рджреЗрд╢реА рдПрд╕рд┐рдВрдХреНрд╕/рд╡реЗрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдкреЛрд▓-рдЖрдзрд╛рд░рд┐рдд рдлреНрдпреВрдЪрд░реНрд╕ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЖрдИрдУ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдлреНрдпреВрдЪрд░реНрд╕ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп рдЬреЛ рдорд╛рдирдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд╣реИред рд╡рд╣ рдЕрдВрддрд┐рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдЗрд╕ рд╕реНрдерд┐рд░реАрдХрд░рдг рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред
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
рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд░рд╛рдЬреНрдп рдорд╢реАрди рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд╕ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд░рд╛рдЬреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░рд╛рдЬреНрдп рдХрд╛ рдЖрдХрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрдкрд░рд▓рд╛рдЗрдирд┐рдпрд░ рд░реВрдк рд╕реЗ рдмрдврд╝рддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдЯреИрдХ рдкрд░ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд░рд╛рдЬреНрдп рдХрд╛ рдЖрдХрд╛рд░ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рд╕реНрдЯрдо рдереНрд░реЗрдб рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдХреЛрдбрдЬрди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рддрд╛рдХрд┐ рдЖрдХрд╛рд░ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рд╣реЛ, рдХрдо рд╕реЗ рдХрдо рдЗрддрдирд╛ рдЦрд░рд╛рдм рди рд╣реЛ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рд╣реЛ, рдПрдХ рдЕрд╡рд░реБрджреНрдз рдмрдЧ рдлрд┐рдХреНрд╕ рд╣реИред
рдореБрджреНрджрд╛: #56238
async рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЙрдирдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ рдХрдИ рдЬреАрд╡рдирдХрд╛рд▓ рд░рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рднреА рднрд╡рд┐рд╖реНрдп рдореЗрдВ "рдХреИрдкреНрдЪрд░" рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдЕрдВрджрд░ impl Future
рдХрдо рд╣реЛрдирд╛ рдПрдХрд╛рдзрд┐рдХ рдЗрдирдкреБрдЯ рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ; рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╣рд░реЗ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ
рдЗрд╕ рдХрд╛рдоред рдЪреВрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдИ (рд╢рд╛рдпрдж рд╕рднреА elieded) рдЗрдирдкреБрдЯ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдЕрд╡рд░реБрджреНрдз рдмрдЧ рдлрд┐рдХреНрд╕ рд╣реИред
рдпреЗ рд╕рднреА рдЬреНрдЮрд╛рдд рд╣реИрдВ рдФрд░ рдПрдорд╡реАрдкреА рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИрдВ, рдЬреИрд╕реЗ рд╣реА рд╣рдо рдПрд╕рд┐рдВрдХ/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рднреЗрдЬ рджреЗрддреЗ рд╣реИрдВ, рд╣рдо рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрд░рдПрдлрд╕реА рдореЗрдВ, рд╣рдордиреЗ рдПрд╕рд┐рдВрдХреНрд╕ рд╕рдВрд╢реЛрдзрдХ рдХреЛ рдХреНрд▓реЛрдЬрд░ рд▓рд┐рдЯрд░рд▓ рдкрд░ рдПрдХ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд╕рдорд░реНрдерди рдХрд┐рдпрд╛, рдЕрдЬреНрдЮрд╛рдд рдПрд╕рд┐рдВрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд░рд╣рд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрднрд╡ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рдЬ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрднреА рднреА рдХрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реИ:
рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЯреАрдПрд▓рдПрд╕ рдХреЛ рд╡реЗрдХрд░ рдХреЛ рдиреАрдЪреЗ рдХреА рдУрд░ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдВрддрд░рд┐рдХ рднрд╡рд┐рд╖реНрдп рдХрд╛ рдЪреБрдирд╛рд╡ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ "рд╣реИрдХ" рд╣реИ рдЬреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдЯреАрдПрд▓рдПрд╕ рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдореЗрдВ, рд╣рдорд╛рд░рд╛ рдЯреАрдПрд▓рдПрд╕ рдХреЗ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡реЗрдХрд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЗрдЯ рдорд╢реАрди рдЬрдирд░реЗрд╢рди рдХреЛрдб рдореЗрдВ рдЧрд╣рд░реЗ рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рддрд░реНрдХ рд▓реЗрдиреЗ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХреЗред
рдпрджреНрдпрдкрд┐ рд╣рдо рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рдирд╣реАрдВ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдЗрд╕реЗ рдПрдХ рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдорд╛рдирддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ TLS рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рд╕рд┐рд╕реНрдЯрдо рдкрд░ async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╢реБрджреНрдз рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореБрджреНрджрд╛ рд╣реИ: рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рдХреБрдЫ рднреА рдЯреАрдПрд▓рдПрд╕ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ ред
рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓рдХреНрд╖рдгреЛрдВ рдореЗрдВ async рд╕рдВрдмрджреНрдз рдХрд╛рд░реНрдпреЛрдВ рдпрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ; рдпрд╣ рдПрдХрдорд╛рддреНрд░ рд╕реНрдерд╛рди рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк fn
рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди async fn
ред Async рддрд░реАрдХреЗ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЕрдореВрд░реНрдд рд╣реЛрдВрдЧреЗ рдФрд░ рд╣рдо рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдПрдХ рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐ рдХреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдПрдХ рд╕рдВрдмрджреНрдз рдкреНрд░рдХрд╛рд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рднрд╡рд┐рд╖реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛; рдкреНрд░рддреНрдпреЗрдХ рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐ рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рднрд╡рд┐рд╖реНрдп рдкреНрд░рдХрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧреА рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рд╡рд┐рдзрд┐ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреА рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рднрд╡рд┐рд╖реНрдп рд╕рднреА рдЗрдирдкреБрдЯ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░реЗрдЧрд╛, рдХрд┐рд╕реА рднреА рдЗрдирдкреБрдЯ рдЬреАрд╡рдирдХрд╛рд▓ рдпрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреА рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдЬреЗрдиреЗрд░рд┐рдХ рд╕рдВрдмрджреНрдз рдкреНрд░рдХрд╛рд░ рдирд╛рдордХ рдПрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдПрдХ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдЬрд┐рд╕реЗ рд╣рдо рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЪрд╛рд╣рддреЗ рдереЗ рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдареАрдХ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдХрд▓реНрдк рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдмрджреНрдз рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рдВрдХрд▓реНрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред
рдмрдХрд╛рдпрд╛ рдбрд┐рдЬрд╛рдЗрди рдореБрджреНрджреЗ рднреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде async рд╡рд┐рдзрд┐рдпрд╛рдБ рд╡рд┐рдирд┐рдореЗрдп рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕рдорд╛рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрдВрдЧреЗ? рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, async рд╡рд┐рдзрд┐рдпрд╛рдБ рдСрдЯреЛ рд▓рдХреНрд╖рдгреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдХреБрдЫ async рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рднрд╡рд┐рд╖реНрдп рдПрдХ рдСрдЯреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЖрдк рдПрдХ async рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рд╕рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдиреНрдпреВрдирддрдо рд╕рдорд░реНрдерди рднреА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рднрд╡рд┐рд╖реНрдп рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд┐рдЪрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ "рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реБрд░рдХреНрд╖рд┐рдд" рдмрдирд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдХреЛрд░рдЯрд╛рдЗрди рд╕реНрдЯреЗрдЯ рдорд╢реАрди рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрд╕реНрдерд┐рд░ рдЬрдирд░реЗрдЯрд░ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬреЛ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдХрдИ рдорд╛рди рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдирд╛рдирд╛ рд╣реИ рдЬреЛ "рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ" рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрд╕рд┐рдВрдХ рдлрд╝рдВрдХреНрд╢рди рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
рд╡рд╛рдпрджрд╛ред рдЗрд╕реА рддрд░рд╣, рд╣рдо рдПрд╕рд┐рдВрдХ рдЬреЗрдирд░реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд░рдЪрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ "рд╕реНрдЯреНрд░реАрдо" рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрдЯрд░реЗрдЯрд░ рдХреЗ рдПрд╕рд┐рдВрдХ рд╕рдордХрдХреНрд╖ред рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЕрдХреНрд╕рд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмреАрдЪ рднреЗрдЬреЗ рдЬрд╛ рд░рд╣реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдзрд╛рд░рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВред
рдЬреЗрдирд░реЗрдЯрд░ рдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЦреБрд▓реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреНрд░рд╢реНрди рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХрдИ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рд╣реА рд▓рдЪреАрд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИрдВред рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдкреАрдЖрдИ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд░рд╕реНрдЯ рдореЗрдВ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдбрд┐рдЬрд╛рдЗрди рдЕрднреА рднреА рд╣рд╡рд╛ рдореЗрдВ рдФрд░ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реИред
@rfcbot fcp рдорд░реНрдЬ
рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп @withboats рдиреЗ рдЗрд╕реЗ рдорд░реНрдЬ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛ рд╣реИред рдЕрдЧрд▓рд╛ рдЪрд░рдг рдмрд╛рдХреА рдЯреИрдЧ рдХреА рдЧрдИ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдореАрдХреНрд╖рд╛ рд╣реИ:
рдЪрд┐рдВрддрд╛рдУрдВ:
рдПрдХ рдмрд╛рд░ рдЬрдм рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдореАрдХреНрд╖рдХ рд╕реНрд╡реАрдХреГрддрд┐ рджреЗ рджреЗрддреЗ рд╣реИрдВ (рдФрд░ рдЕрдзрд┐рдХрддрдо 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 рд╕реЗ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реЛрдЧреА:
рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рдореБрдЦ рдЕрд╡рд░реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред @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 рдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЙрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рдкрд╕рдВрдж рдХрд░рдиреЗ рдХреЗ рдХрдИ рдареЛрд╕ рдХрд╛рд░рдг рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВ:
@rfcbot рдиреЗ рд▓реИрдВрдЧ рд╕реЗ рдкреВрдЫрд╛ "рдХреНрдпрд╛ рд╣рдо async рдЕрд╕реБрд░рдХреНрд╖рд┐рдд fn рдХреЛ async fn рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд┐рд░ рдХрд░рдирд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ?"
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ rfcbot рдХреЗ рд╕рд╛рде рдорддрджрд╛рди рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрдо рд╕реЗ рдХрдо рдирд╛рдорд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп @withboats рдиреЗ рдЯреАрдореЛрдВ рд╕реЗ рдкреВрдЫрд╛ рд╣реИ: рдЯреА-рд▓реИрдВрдЧ, рдЗрд╕ рдкрд░ рдЖрдо рд╕рд╣рдорддрд┐ рдХреЗ рд▓рд┐рдП:
"рдХреНрдпрд╛ рд╣рдо рдПрд╕рд┐рдВрдХреНрд╕ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдПрдлрдПрди рдХреЛ рдПрд╕рд┐рдВрдХреНрд╕ рдПрдлрдПрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд┐рд░ рдХрд░рдирд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ?"
@ рдирд╛рд╡реЛрдВ рдХреЗ рдмрд┐рдирд╛
рдореИрдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд 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
ред
рдпрд╣рд╛рдБ рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ рд╣реИрдВ:
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 рд░рд╕реНрдЯ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЙрдкрд░реЛрдХреНрдд рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡рд┐рд▓рдп рдХреЗ рд╕реНрд╡рднрд╛рд╡ рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рдЯрд┐рдкреНрдкрдгреА рдЕрд╡рдзрд┐ рдЕрдм рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ ред
рд╢рд╛рд╕рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рд▓реЗрдЦрдХ рдХреЛ рдЙрдирдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдФрд░ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдЖрд░рдПрдлрд╕реА рдХрд╛ рдЬрд▓реНрдж рд╣реА рд╡рд┐рд▓рдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред