Rust: RFC 2046 рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛, рд▓реЗрдмрд▓-рдмреНрд░реЗрдХ-рд╡реИрд▓реНрдпреВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдлрд╝рд░ре░ 2018  ┬╖  135рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: rust-lang/rust

рдпрд╣ RFC 2046 (рд░рд╕реНрдЯ-рд▓реИрдВрдЧ/rfcs#2046) рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдХрджрдо:

рдЕрдирд╕реБрд▓рдЭреЗ рдкреНрд░рд╢реНрди:

B-RFC-implemented B-unstable C-tracking-issue F-label_break_value T-lang

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

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

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

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

loop + рдкреАрдЫреЗ break рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдореЗрдВ рдпрд╣ рдкрд╕рдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрд░рд╛рджреЗ рдХреЛ рдПрдХ рдРрд╕реЗ рдЯреВрд▓ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВ рдЬреЛ рдирд┐рдпрдВрддреНрд░рдг-рдкреНрд░рд╡рд╛рд╣ рдХреА рдПрдХ рдЕрд▓рдЧ рд╢реИрд▓реА рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рдорд╛рди рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ loop рдирд┐рд░реНрдорд╛рдг рднреА рд╣реИ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдВ while true { ... } рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдРрд╕рд╛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдЗрд░рд╛рджреЗ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реЛрддрд╛ рд╣реИред

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

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

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

"рд░рд┐рдЯрд░реНрди" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ ? рд▓реЗрдмрд▓ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ (рдЯреНрд░рд╛рдЗрдСрдк рдХреНрд╡реЗрд╢реНрдЪрдирдорд╛рд░реНрдХ рдСрдкрд░реЗрдЯрд░ рдЪреАрдЬрд╝)ред

рдмреНрд░реЗрдХ рдХреЗ рдмрдЬрд╛рдп рдХреАрд╡рд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдЯрд░реНрди рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ?

@ рдорд╛рд░реНрдХ-рдЖрдИрдПрдо рдФрд░ @ рдЬреЛрд╢рдЯреНрд░рд┐рдкреНрд▓реЗрдЯ рдкрд╣рд▓реЗ рд╣реА рд╡рд╛рдкрд╕реА рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдЕрдирд╕реБрд▓рдЭрд╛ рдкреНрд░рд╢реНрди рд╣реИред

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

C, C++, Java, C#, JavaScript рдФрд░ рд╕рдВрднрд╡рдд: рдЕрдзрд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЖрдк рдЖрдорддреМрд░ рдкрд░ break рдПрдХ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдлреЙрд▓-рдереНрд░реВ рдХреЛ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗред рд░рд╕реНрдЯ рдиреЗ рдЗрд╕реЗ рдФрд░ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ | рдкреИрдЯрд░реНрди рдореЗрдВ рд▓реЗрдХрд┐рди рдЙрди рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ break рдХреЛ рдХреЗрд╡рд▓ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ break рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рди рдХрд┐ return ред

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

рдХрд┐рд╕реА рдмреНрд▓реЙрдХ рдХреЛ рд▓реЗрдмрд▓ рдХрд░рдиреЗ рд╕реЗ рдореМрдЬреВрджрд╛ рд▓реЗрдмрд▓ рд░рд╣рд┐рдд рд╡рд┐рд░рд╛рдо рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ

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

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреНрд░реЗрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╣рддреНрдпрд╛рд░рд╛ рдмрд┐рдВрджреБ рд╣реИред рдмреНрд▓реЙрдХ рд╕реЗ рдмреНрд░реЗрдХ рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдПрдХ рдмрд╛рдд рд╣реИред рдмреНрд▓реЙрдХ рд╕реЗ рд╡рд╛рдкрд╕реА...рдЗрддрдирд╛ рдирд╣реАрдВред

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдХреЗ рдкреНрд░рдпреЛрдЧ рдкрд░ рдореИрдВ рд╢реЗрдпрд░ @joshtriplett рдХреЗ рджреГрд╢реНрдп break рдХреЗ рдмрдЬрд╛рдп return , рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдЪрд░реНрдЪрд╛ рдХреА рддрд░рд╣ рдЖрд░рдПрдлрд╕реА рдкрд░ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ... рдЖрдк рдкреНрд░рд╢реНрди рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рд▓реИрдВрдЧ рдЯреАрдо рдореЗрдВ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдиреЛрдЯ рдХреЗ рд╕рд╛рде рдмреЙрдХреНрд╕ рдкрд░ рдЯрд┐рдХ рдХрд░реЗрдВ =)

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

рдореИрдВ рдЕрднреА рднреА return рд╕реЗ рдЕрдзрд┐рдХ break рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣рд╛рдВ рдЕрд╕рд╣рдордд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред рдкреНрд░рд╢реНрди рд╣рд▓ рд╣реЛ рдЧрдпрд╛ред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ ( rustc 1.28.0-nightly (a1d4a9503 2018-05-20) ) rustc рд▓реЗрдмрд▓ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ рдкрд░ unsafe рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ?

@topecongiro рд╣рд╛рдВ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд╛рджреЗ рдмреНрд▓реЙрдХ рдкрд░ рд╣реА рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдЗрддрдиреА рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдФрд░ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдореЗрд░рд╛ рдЭреБрдХрд╛рд╡ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдиреЗ рдХреА рдУрд░ рд╣реИред (рдЪрд░рдо рдкрд░, рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ else 'a: { ред)

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣рдордд рд╣реИрдВред рдЕрд╕реБрд░рдХреНрд╖рд┐рдд + рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреБрдЫ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИред

рдПрдХ рдЪреБрдЯрдХреА рдореЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

'a: {
unsafe {...}
}

рд╕рд╣реА?

рдЕрд╕рд▓ рдореЗрдВ, рдЕрдиреНрдп рд╕рднреА рдПрдХ рдирдпрд╛ рд╢рдмреНрджрд╛рд╡рд▓реА рджрд╛рдпрд░рд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рд╣реИред рд╕рдВрдкреВрд░реНрдг if-else рдПрдХ рдмреНрд▓реЙрдХ (рдереЛрдбрд╝реЗ) рд╣реИред рддреЛ рдирд╣реАрдВ, рдЖрдкрдХреЛ else 'a: { рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ рдЖрдкрдХреЛ 'a: if ... else { рдорд┐рд▓реЗрдЧрд╛ред

else рдореЗрдВ рдПрдХ рдмреНрд▓реЙрдХ (рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐) рд╣реИред рдмреНрд▓реЙрдХ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдИ "рдирдпрд╛ рд╢рд╛рдмреНрджрд┐рдХ рджрд╛рдпрд░рд╛" рдирд╣реАрдВ рд╣реИред
else рд╕реЗ рднреА рдмрджрддрд░ рд╕рддрд╣ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реНрдерд┐рддрд┐ 'a: while foo 'b: {...} ред
(рджрд┐рд▓рдЪрд╕реНрдк рд░реВрдк рд╕реЗ, continue 'a break 'b , рд╣рдо рдХрдо рд╕реЗ рдХрдо рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ)

(рджрд┐рд▓рдЪрд╕реНрдк рд░реВрдк рд╕реЗ, continue 'a break 'b , рд╣рдо рдХрдо рд╕реЗ рдХрдо рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ)

рдпрд╣ рдПрдХ рдорд╣рд╛рди рдЕрд╡рд▓реЛрдХрди рд╣реИ!

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

( while рдпрд╛ for рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рд▓реЗрдмрд▓-рдмреНрд░реЗрдХ-рд╡реИрд▓реНрдпреВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдпрд╛ break рд╕рд╛рде рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рд╡реЗ рдПрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред)

@eddyb

(рджрд┐рд▓рдЪрд╕реНрдк рд░реВрдк рд╕реЗ, рдЬрд╛рд░реА рд░рдЦреЗрдВ 'рдП рдмреНрд░реЗрдХ рд╣реИ' рдмреА, рд╣рдо рдХрдо рд╕реЗ рдХрдо рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ)

рдХреЗрд╡рд▓ рдЕрдЧрд░ break 'b рд▓реВрдк рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ ...

@ рдорд╛рд░реНрдХ-рдЖрдИрдПрдо рдпрд╣ 'a: while foo {'b: {...}} рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, break рд▓реВрдк рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реВрдк рд╕реНрд╡рдпрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдмреЙрдбреА рдмреНрд▓реЙрдХ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдкрд╣рд▓реЗ рд▓реВрдк рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИред

рд╡рд╛рд╣, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ _highly_ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ break 'b рдореВрд▓ рд░реВрдк рд╕реЗ goto 'b , рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдХрднреА рднреА рд▓реВрдк рдмреЙрдбреА рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреА рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ ...

рдУрд╣: man_facepalming: рдЕрдЪреНрдЫрд╛...

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓реЗрдмрд▓ рдмреНрд░реЗрдХ/рдЬрд╛рд░реА рд░рдЦрдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ:/

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

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

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

рддреЛ, рд╣рдо рд▓реЗрдмрд▓ рдХрд┐рдП рдЧрдП рдмреНрд░реЗрдХ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд▓рдн рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рддреЛ, рд╣рдо рд▓реЗрдмрд▓ рдХрд┐рдП рдЧрдП рдмреНрд░реЗрдХ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд▓рдн рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╡рд╛рд▓ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдереЗ:

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

рдкрд╣рд▓реЗ (рд╕реНрд╡реАрдХрд╛рд░реНрдп рд░реВрдк рд╕реЗ рдкрдХреНрд╖рдкрд╛рддреА) рдирдореВрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдореЗрдВ рд▓реЗрдмрд▓ рдмреНрд░реЗрдХ рдХреЗ рд╕рд╛рде рдореЗрд░реА рдЖрдЦрд┐рд░реА (рдФрд░ рдкрд╣рд▓реА) рдореБрдарднреЗрдбрд╝ рддрд╛рд░рдХреАрдп рдирд╣реАрдВ рдереА: https://github.com/rust-lang/rust/pull/48456/files#diff -3ac60df36be32d72842bf5351fc2bb1dL51ред рдореИрдВ рд╕рдореНрдорд╛рдирдкреВрд░реНрд╡рдХ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдореВрд▓ рд▓реЗрдЦрдХ рдиреЗ рдереЛрдбрд╝рд╛ рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реЛрддрд╛ рддреЛ рд╡реЗ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЗрдмрд▓ рдмреНрд░реЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рдереЗ ... рдпрд╣ рдЙрд╕ рддрд░рд╣ рдХреЗ рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд╕рдВрднрд╡ рд╣реЛрдиреЗ рдкрд░ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рд╡рд╣ рд╣реИ... рд▓реЗрдмрд▓ рдмреНрд░реЗрдХ рдирд╣реАрдВ?

рдЗрд╕рдореЗрдВ break рдФрд░ continue desugar рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ RFC рдХреЗ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдореВрд▓ RFC рдЪрд░реНрдЪрд╛ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛; рджреЗрдЦреЗрдВ https://github.com/rust-lang/rfcs/pull/2046#issuecomment -312680877

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд╛рдо break рдЙрдк-рдЗрд╖реНрдЯрддрдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рдПрдХ рдЕрдзрд┐рдХ "рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ" рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ return 'a value , рдЬреЛ рдЙрд╕ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп value рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдмреНрд▓реЙрдХ 'a рдмрд╛рдж "рдмрд╛рдж" рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рддреБрд░рдВрдд рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред

@ рдорд╛рд░реНрдХ-рдЖрдИрдПрдо "рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ" "рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕реБрд▓рдн рдмрдирд╛рдирд╛" рдирд╣реАрдВ рд╣реИред

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

(рд╕рд╛рде рд╣реА, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб RFC 2046/рд▓реЗрдмрд▓-рдмреНрд░реЗрдХ-рд╡реИрд▓реНрдпреВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ... рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рдЧрд▓рдд рдХреЛрдб рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рд╣реИ?)

рд╡рд╣ рд╣реИ... рд▓реЗрдмрд▓ рдмреНрд░реЗрдХ рдирд╣реАрдВ?

(рд╕рд╛рде рд╣реА, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб RFC 2046/рд▓реЗрдмрд▓-рдмреНрд░реЗрдХ-рд╡реИрд▓реНрдпреВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ... рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рдЧрд▓рдд рдХреЛрдб рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рд╣реИ?)

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

@ рдорд╛рд░реНрдХ-рдЖрдИрдПрдо "рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ" "рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕реБрд▓рдн рдмрдирд╛рдирд╛" рдирд╣реАрдВ рд╣реИред

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

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореЗрд░рд╛ рдорддрд▓рдм рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдХрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЕрдХреЗрд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рд╣реВрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдореЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред

рдЖрдИрдПрдордПрдЪрдУ, рдпрд╣ рд▓реЗрдмрд▓ рдХрд┐рдП рдЧрдП рдмреНрд░реЗрдХ/рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдореМрд▓рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдпрд╣ _too_ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдЗрд╕реЗ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ "рдЕрдЪреНрдЫреА рд╢реИрд▓реА" (рдЬреЛ рднреА рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ) рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдХреЗрд╡рд▓ рд▓реВрдк рдмреЙрдбреА рдХреЗ рдЖрд░рдВрдн рдпрд╛ рдЕрдВрдд рд╕реЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рд▓реЗрдмрд▓ рдХрд┐рдП рдЧрдП рдмреНрд░реЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдмреАрдЪ рдореЗрдВ рдирд╣реАрдВ)ред" рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдХ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рд▓реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХреЗ рд╕реНрдкреЙрдЯ рдХрд░рдирд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореИрдВ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЧреЛрдЯреЛ/рд▓реЗрдмрд▓ рдмреНрд░реЗрдХ рд╕реЗ рдмрдЪрддрд╛ рд╣реВрдВ: https://gist.github.com/SoniEx2/fc5d3614614e4e3fe131/#file -special-lua-L4-L72

рдХреНрдпрд╛ рдпрд╣ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реИ?

рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рд╣рдо рд▓реЗрдмрд▓ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рд╢рд░реНрдд рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЗрд╕ , рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд▓реЗрдмрд▓ рд░рд╣рд┐рдд рдмреНрд░реЗрдХ рдФрд░ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХрд╛ рдмрд┐рдВрджреБ рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рд▓реВрдк рд╣реЗрдбрд░ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдерд┐рддрд┐/рдорд╛рди рдирд╣реАрдВ рдбрд╛рд▓

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

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

рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рдпрд╣реА рдорддрд▓рдм рдерд╛, @ рдорд╛рд░реНрдХ-рдЗрдо- рдпрд╣ рд▓реЗрдмрд▓ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ рдХреЗ рдмрдЬрд╛рдп рд▓реЗрдмрд▓ рд╡рд╛рд▓реЗ рд▓реВрдк рдХрд╛ рдХрд╛рдлреА рдорд╛рдирдХ рдЙрдкрдпреЛрдЧ рдерд╛ред

рдПрдХ рдЕрдзрд┐рдХ "рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ" рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд┐рдВрдЯреИрдХреНрд╕ рд░рд┐рдЯрд░реНрди 'рдПрдХ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдЙрд╕ рдмреНрд▓реЙрдХ рдХреЗ рдореВрд▓реНрдп рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреНрд▓реЙрдХ' рдП рдХреЗ рдмрд╛рдж рддреБрд░рдВрдд рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ return 'label expr "рдЬреЛ рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ" рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ "рд╕реНрдерд╛рди 'рд▓реЗрдмрд▓ рдкрд░ рд╡рд╛рдкрд╕реА' рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ break 'label expr рдЗрд╕ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдореЗрдВ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ ...

рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЕрд▓рдЧ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ return 'label expr рд╡рдХрд╛рд▓рдд рдХреА рд╣реЛ рд╕рдХрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, return рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪрд╛рдирдХ рдмрд╣реБрдд рдХрдо рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╡рд┐рдХрд▓реНрдк рдмрди рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдореБрдЭреЗ break 'label expr рдкрдХреНрд╖ рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред

рдореЗрд░рд╛ рджреГрдврд╝ рдордд рд╣реИ рдХрд┐ рдпрд╣ break 'label expr рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рди рдХрд┐ return 'label expr ред рдЕрдиреНрдпрдерд╛ рдХрд░рдирд╛ рд▓реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ break 'label рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ред

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

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

рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ https://github.com/rust-lang/rust/pull/50045 рдореЗрдВ @est31 рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХреА рдЧрдИ break рдХреЛ return рдмрдЬрд╛рдп рд╕рддрд╣ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореИрдВ рд▓реЗрдмрд▓-рдмреНрд░реЗрдХ-рд╡реИрд▓реНрдпреВ (RFC 2046) рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реВрдВред

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

рдкреНрд░рддрд┐рд╡реЗрджрди

  • рдлрд╝реАрдЪрд░ рдЧреЗрдЯ:

    • https://github.com/rust-lang/rust/blob/master/src/test/ui/feature-gates/feature-gate-label_break_value.rs

    • https://github.com/rust-lang/rust/blob/master/src/test/ui/feature-gates/feature-gate-label_break_value.stderr

  • рдирд┐рджрд╛рди: https://github.com/rust-lang/rust/blob/master/src/librustc_passes/diagnostics.rs#L285
  • рдкрд░реАрдХреНрд╖рдг:

    • https://github.com/rust-lang/rust/blob/master/src/test/ui/label/label_break_value_continue.rs

    • https://github.com/rust-lang/rust/blob/master/src/test/ui/label/label_break_value_unlabeled_break.rs

    • https://github.com/rust-lang/rust/blob/master/src/test/ui/label/label_break_value_illegal_uses.rs

    • https://github.com/rust-lang/rust/blob/master/src/test/ui/lint/unused_labels.rs

    • https://github.com/rust-lang/rust/blob/master/src/test/ui/run-pass/for-loop- while/label_break_value.rs

FCP . рд╕реЗ рдкрд╣рд▓реЗ TODO

@rfcbot рдЪрд┐рдВрддрд╛ test

рдЕрдВрддрд┐рдо рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ FIXME рд╣реИ:

// FIXME: ensure that labeled blocks work if produced by macros and in match arms

рдЗрд╕реЗ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВрдиреЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ wrt. FIXME рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

// run-pass

#![feature(label_break_value)]

#[test]
fn lbv_match_test() {
    fn test(c: u8, xe: u8, ye: i8) {
        let mut x = 0;
        let y = 'a: {
            match c {
                0 => break 'a 0,
                v if { if v % 2 == 0 { break 'a 1; }; v % 3 == 0 } => { x += 1; },
                v if { 'b: { break 'b v == 5; } } => { x = 41; },
                _ => {
                    'b: {
                        break 'b ();
                    }
                },
            }
            x += 1;
            -1
        };

        assert_eq!(x, xe);
        assert_eq!(y, ye);
    }

    test(0, 0, 0);
    test(1, 1, -1);
    test(2, 0, 1);
    test(3, 2, -1);
    test(5, 42, -1);
    test(7, 1, -1);
}

#[test]
fn lbv_macro_test() {
    macro_rules! mac1 {
        ($target:lifetime, $val:expr) => {
            break $target $val;
        };
    }
    let x: u8 = 'a: {
        'b: {
            mac1!('b, 1);
        };
        0
    };
    assert_eq!(x, 0);
    let x: u8 = 'a: {
        'b: {
            if true {
                mac1!('a, 1);
            }
        };
        0
    };
    assert_eq!(x, 1);
}
// compile-fail

#![feature(label_break_value)]

fn lbv_macro_test_hygiene_respected() {
    macro_rules! mac2 {
        ($val:expr) => {
            break 'a $val;
        };
    }
    let x: u8 = 'a: {
        'b: {
            if true {
                mac2!(2);
            }
        };
        0
    };
    assert_eq!(x, 2);

    macro_rules! mac3 {
        ($val:expr) => {
            'a: {
                $val
            }
        };
    }
    let x: u8 = mac3!('b: {
        if true {
            break 'a 3;
        }
        0
    });
    assert_eq!(x, 3);
    let x: u8 = mac3!(break 'a 4);
    assert_eq!(x, 4);
}

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд-FCP рд╕реЗ FCP рдореЗрдВ рдЬрд╛рдПрдБ, рдЗрдирдХреЗ рд╕рдорд╛рди рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред

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

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

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

  • рд▓рд╛рдЧрдд-рд▓рд╛рдн (https://github.com/rust-lang/rust/issues/48594#issuecomment-422235234)
  • FIXME-in-tests (https://github.com/rust-lang/rust/issues/48594#issuecomment-421625182)
  • рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ (https://github.com/rust-lang/rust/issues/48594#issuecomment-422281176)

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

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

@rfcbot рдЪрд┐рдВрддрд╛ рд▓рд╛рдЧрдд-рд▓рд╛рдн

RFC FCP рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ :

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

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

@nrc рдореИрдВ рдПрдХ рд╣реА рдЪрд┐рдВрддрд╛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рддрд░реНрдХ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдХреНрд░реЛрдЬрд╝ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА, рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

рд╣рд╕реНрддрд▓рд┐рдЦрд┐рдд рдкрд╛рд░реНрд╕рд░, рдЕрдзрд┐рдХрддрд░... (рдореБрдЭреЗ рдЕрдкрдиреЗ рд╣рд╕реНрддрд▓рд┐рдЦрд┐рдд рдкрд╛рд░реНрд╕рд░ рдкрд╕рдВрдж рд╣реИрдВ >.<)

рд▓реЗрдмрд▓-рдкреНрд░рдЪрд╛рд░ ( try_foo() 'bar? ) рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА/рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

@rfcbot рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ

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

~ рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, EXPR is PAT рдХрд╛ рдореЗрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди break 'label value рдкрд░ рдХрдо рд╕реЗ рдХрдо рдПрдПрд╕рдЯреА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ desugaring рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди EXPR? рд╕рдВрдХрд▓рдХ рдореЗрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ break 'label value рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗред ~

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

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ loop { ... break 'label value ... } , { ... break 'label value ... } рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдЗрд╕реЗ рдЖрдЬрдорд╛рдиреЗ рдХрд╛ рдХрднреА рдореМрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╣рдореЗрд╢рд╛ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред

@petrochenkov рдХрд▓рд╣ рдкрд░ @joshtriplett рд╕реЗ рдмрд╛рдд рдХрд░, рд╡реЗ рдиреЗ рдХрд╣рд╛ рдХрд┐ рд╡реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЙрдиреНрдореБрдЦ рдЬрдЯрд┐рд▓рддрд╛, рдирд╣реАрдВ рднрд╛рд╖рд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдереЗред

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

рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рд╡рд╣ рд╡рд┐рд╖рдп рдкрд╣рд▓реЗ рд╣реА рдЖрд░рдПрдлрд╕реА рдореЗрдВ рдЖ рдЪреБрдХрд╛ рд╣реИред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд┐рдпрд╛ред рд╕реАрдзреЗ рдиреАрдЪреЗ @joshtriplett рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдкреНрд░рд╢реНрди рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ?

рдореИрдВ @nrc рдФрд░ @joshtriplett рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдФрд░ рдореИрдВ рдпрд╣рд╛рдВ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЪрд┐рдВрддрд╛ рднреА рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рд╣рдордиреЗ рдЗрд╕ RFC рдХреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдХрд┐ @nrc рдФрд░ @joshtriplett рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдП рдЧрдП рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдкрд░ рд╕реНрдерд┐рд░реАрдХрд░рдг рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди @Centril рдХреЗ рдорд░реНрдЬ рдкреНрд░рд╕реНрддрд╛рд╡ рдЗрд╕ рдЕрд╡рд░реБрджреНрдз рдЪрд┐рдВрддрд╛ рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╛рдирдХ "рдлреАрдЪрд░ рдмреЗрдХ рдХрд┐рдпрд╛ рд╣реБрдЖ" рдорд░реНрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП @Centril рдХреЛ рджреЛрд╖ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЯреВрдЯрдиреЗ рдкрд░: рдпрджрд┐ рд╣рдо рд╕реНрдерд┐рд░реАрдХрд░рдг рдкрд░ рдЕрдирд╕реБрд▓рдЭреЗ рдЕрд╡рд░реЛрдзрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрди рдЕрд╡рд░реЛрдзрдХреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

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

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

рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП @Centril рдХреЛ рджреЛрд╖ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЯреВрдЯрдиреЗ рдкрд░: рдпрджрд┐ рд╣рдо рд╕реНрдерд┐рд░реАрдХрд░рдг рдкрд░ рдЕрдирд╕реБрд▓рдЭреЗ рдЕрд╡рд░реЛрдзрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрди рдЕрд╡рд░реЛрдзрдХреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдлрд┐рд░ рднреА рдорд╛рдлрд╝реА; рдореИрдВ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдЕрдирдЬрд╛рди рдерд╛, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдмрдирд╛рдИ рддреЛ рдореБрдЭреЗ рдРрд╕реА рдЪреАрдЬреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдереАред

рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╕рдордЭреМрддреЗ рдХреЗ рдПрдХ рддреЛрдбрд╝рдлреЛрдбрд╝ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдореБрдЭреЗ рдЖрд░рдПрдлрд╕реА рдХреЗ рд╡рд┐рд▓рдп рдХреЗ рд▓рд┐рдП рд╕рд╣рдорддрд┐ рд╣реБрдИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЕрдкрд░реНрдпрд╛рдкреНрдд рдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рд╣реИред

рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдирд╕реБрд▓рдЭрд╛ рдкреНрд░рд╢реНрди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛; рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЙрд╕ рд╕рдордп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЧрд▓рддреА рд╣реБрдИ рдереАред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреИрд╕реЗ рдХрд░реЗрдВ; рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЕрдирд╕реБрд▓рдЭреЗ рдкреНрд░рд╢реНрди RFC рдХреЗ _text_ рдореЗрдВ рдЖ


рдЬрд╣рд╛рдБ рддрдХ FCP-рдорд░реНрдЬ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ; рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХрд░реВрдкрддрд╛ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдФрд░ рдореИрдХреНрд░реЛрдЬрд╝ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдерд┐рд░реАрдХрд░рдг рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдирд╛ рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреА; рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ :)

@est31

рдореБрдЭреЗ рдЕрдиреНрдпрдерд╛ рдмрд┐рдирд╛ рд╢рд░реНрдд рдмреНрд░реЗрдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛,

рдпрд╛ рдпрд╛ рддреЛ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╛ рдкреБрдирд░реНрдЧрдарди рдХрд░реЗрдВред

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд┐рдпрд╛ред

break 'pseudo_return рдХреЛ return Ok(vectors); рдХреНрдпреЛрдВ рди рдмрджрд▓реЗрдВ?

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ try_foo() 'bar? ))ред

рд▓реЗрдмрд▓-рдмреНрд░реЗрдХ-рд╡реИрд▓реНрдпреВ рдЕрдиреНрдпрдерд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЛрдб рдХреА рдЖрд╕рд╛рди рдЕрдирд┐рд╡рд╛рд░реНрдпрддрд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдо рддреМрд░ рдкрд░, рдЕрдирд┐рд╡рд╛рд░реНрдп рдХреЛрдб рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реЛрддрд╛ рд╣реИред

рдпрд╛ рдпрд╛ рддреЛ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╛ рдкреБрдирд░реНрдЧрдарди рдХрд░реЗрдВред

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

рдмреНрд░реЗрдХ 'pseudo_return рдХреЛ рд░рд┐рдЯрд░реНрди рдУрдХреЗ (рд╡реИрдХреНрдЯрд░) рд╕реЗ рдХреНрдпреЛрдВ рди рдмрджрд▓реЗрдВ;?

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

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

@ est31 рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ; рд╢реБрдХреНрд░рд┐рдпрд╛ред

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

рдореИрдВ рд╕реНрдерд┐рд░ рд▓рдХреНрд╖реНрдп рд░рдЦрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрд┐рд╕реА рджрд┐рди рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рд╣рдо рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рдПрдХ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдорд╛рд░рд╛ рдерд╛; рдореВрд▓ рд░реВрдк рд╕реЗ @ est31 рдХреЗ "рдмрд╛рдж рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░реЗрдВ" рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░: рдореИрдВрдиреЗ рдПрдХ L , u8 рдПрдХ рд╕рдВрдпреЛрдЬрди рд╡рд┐рд╕реНрдлреЛрдЯ, u , U , }{ R , }), рдФрд░ рдмрд╣реБ-рдмрд╛рдЗрдЯ рдЯреЛрдХрди рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ "рдЕрдВрддрд░рд╛рд▓" рдХреЗ рд╕рд╛рде (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рдмрд┐рдирд╛ рд╕рдордЭ рдЙрджрд╛рд╣рд░рдг)ред get_token рдлрд╝рдВрдХреНрд╢рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

fn get_token(&mut self) -> Token {
    match decode_byte(self.source) {
        // ...

        // repeat four times with small variations for b'U', b'L', and b'R':
        Some((b'u', rest)) => match decode_byte(rest) {
            Some((b'"', rest)) => self.string_literal(Utf16String, rest),
            Some((b'\'', rest)) => self.char_constant(Utf16Char, rest),
            Some((b'R', rest)) => match decode_byte(rest) {
                Some((b'"', rest)) => self.raw_string_literal(Utf16String, rest),
                _ => self.identifier(rest),
            },
            Some((b'8', rest)) => match decode_byte(rest) {
                Some((b'"', rest)) => self.string_literal(Utf8String, rest),
                Some((b'\'', rest)) => self.char_constant(Utf8Char, rest),
                Some((b'R', rest)) => match decode_byte(rest) {
                    Some((b'"', rest)) => self.raw_string_literal(Utf8String, rest),
                    _ => self.identifier(rest),
                },
                _ => self.identifier(rest),
            },
            _ => self.identifier(rest),
        },

        // ...

        // the "gap" mentioned above is here: single-byte '.' and triple-byte '...' but no double-byte '..':
        Some((b'.', rest)) => match decode_byte(rest) {
            Some((b'0'..=b'9', rest)) => self.number(rest),
            // note the _inner to avoid shadowing the outer `rest` used by the inner `Dot` case:
            Some((b'.', rest_inner)) => match decode_byte(rest_inner) {
                Some((b'.', rest)) => self.make_token(Ellipsis, rest),
                _ => self.make_token(Dot, rest),
            },
            _ => self.make_token(Dot, rest),
        },

        // ...
    }
}

_ => self.identifier(rest) s рдХреЗ рдкрд┐рд░рд╛рдорд┐рдбреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ ( u , U , R , рдФрд░ L ) рдФрд░ _ => self.make_token(Dot, rest) рд▓рд┐рдП рдЪрд╛рд░ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ identifier , string_literal , рдЖрджрд┐ рд╕рднреА рдХреЛ make_token рднреА рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

  • рдореИрдВ рдореБрдЦреНрдп match decode_byte(self.source) рдмрд╛рдж рд╕рднреА make_token рдХреЙрд▓ рдХреЛ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд▓реЗ рдЬрд╛рддрд╛, рдФрд░ рдЗрд╕реЗ рдЗрдирд▓рд╛рдЗрди рдХрд░рддрд╛- рдпрд╣ рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ unsafe рдФрд░ рдЗрд╕рдХреЗ рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ get_token рджреНрд╡рд╛рд░рд╛ рд╕рд╣реА рдард╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • рдореИрдВ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ | break 'label self.string_literal(..) рдЦреЛрдЬрдиреЗ рдПрдХ рдмрд╛рд░ рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рдХреЗ рд▓рд┐рдП рдПрдХ " рдпрд╛ ' , рдФрд░ рддрдм рд╕рднреА рд╕рдВрдпреБрдХреНрдд self.identifier(..) рдХрд┐ рдореИрдЪ рд╣рд╛рде рдХреЗ рдЕрдВрдд рдХреЗ рд▓рд┐рдП рдХреЙрд▓ .

    • рдореИрдВ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрдиреАрдп рд╡рд┐рд╕реНрдлреЛрдЯ рдХреЛ рд░реИрдЦрд┐рдХ рд░реВрдк рджреЗрдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ- u / u8 / U / L рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рдлрд┐рд░ R рдЬрд╛рдВрдЪ рдХрд░реЗрдВ break 'label s рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдПрдХ рдореБрдЯреНрдареА рднрд░ред

  • рдореИрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реЛрддрд╛ рддреЛ break 'label (Ellipsis, rest) рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ ... , рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рджреЛрдиреЛрдВ рд╕рдВрдпреБрдХреНрдд (Dot, rest) рд░реЛрдВ рдХрд┐ рдореИрдЪ рд╣рд╛рде рдХреЗ рдЕрдВрдд рддрдХред

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

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

    • рдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдХреНрд▓реЛрдЬрд░, рдЬреЛ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдзрд╛рд░ рдЪреЗрдХрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред

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

рдореИрдВ рдкреВрд░реА рдмрд╛рдд рд▓рд┐рдЦреВрдВрдЧрд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╣ рдкреНрд░рдпрд╛рд╕ рдХрднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ (рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ рдореИрдВ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛) рдФрд░ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдпрд╣рд╛рдВ рдкрд░реНрдпрд╛рдкреНрдд рд╢рдмреНрдж рдЦрд░реНрдЪ рдХрд┐рдП рд╣реИрдВред :)

@SergioBenitez рдХреНрдпрд╛ рдЖрдк http://rocket.rs/ рдХреЗ label_break_value рдФрд░ рд╕реНрдерд┐рд░реАрдХрд░рдг рдкрд░ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

@рд╕реЗрдВрдЯреНрд░рд┐рд▓ рдЬрд╝рд░реВрд░! рдпрд╣рд╛рдБ рд╕рд╛рд░ рд╣реИ:

fn transform(request: &Request, data: Data) -> Transform<Outcome<_, _>> {
    let outcome = 'o: {
        if !request.content_type().map_or(false, |ct| ct.is_form()) {
            break 'o Forward(data);
        }

        let mut form_string = String::with_capacity(min(4096, LIMIT) as usize);
        if let Err(e) = data.read_to_string(&mut form_string) {
            break 'o Failure(FormDataError::Io(e));
        }

        Success(form_string)
    };

    Transform::Borrowed(outcome)
}

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдореИрдВ рдмрдЪрддрд╛ рд╣реВрдВ:

  • рдкреНрд░рд╛рд░рдВрднрд┐рдХ "рд░рд┐рдЯрд░реНрди" рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ред
  • рдмреНрд▓реЙрдХ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ "рд░рд┐рдЯрд░реНрди" рдорд╛рди рдореЗрдВ Transform::Borrowed рдЬреЛрдбрд╝рдирд╛ред
  • рдпрджрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрд▓рдЧ Transform рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдЧрд▓рддрддрд╛ред

    • рдиреЛрдЯ: рдпрд╣ рд░реЙрдХреЗрдЯ рдФрд░ рдХреЛрдб рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИред

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

@SergioBenitez рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдк (рдЕрдВрддрддрдГ) рдЗрд╕реЗ try { .. } рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕ рддрд░рд╣:

fn transform(request: &Request, data: Data) -> Transform<Outcome<_, _>> {
    Transform::Borrowed(try {
        if !request.content_type().map_or(false, |ct| ct.is_form()) {
            Forward(data)?;
        }

        let mut form_string = String::with_capacity(min(4096, LIMIT) as usize);
        if let Err(e) = data.read_to_string(&mut form_string) {
            Failure(FormDataError::Io(e))?;
        }

        form_string
    })
}

@Centril рд╣рд╛рдБ, рдпрд╣ рддрдм рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕рдлрд▓рддрд╛ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИ, рдЬреЛ рдпрд╣рд╛рдБ рд╣реИред

рдпрд╛ рдпрд╛ рддреЛ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╛ рдкреБрдирд░реНрдЧрдарди рдХрд░реЗрдВред

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

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

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

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

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдк (рдЕрдВрддрддрдГ) рдЗрд╕реЗ try {..} рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕ рддрд░рд╣:
[...]

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

'a: {try{...}}

рдпрд╛

'a: try {...}

рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

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

рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдЕрдкрдорд╛рдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ:

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

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

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

рдореИрдВ @zesterer рд╕реЗ рд╕рд╣рдордд

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛ред
рдкреИрдЯрд░реНрди рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рддрд░рд╣ рд╣реА рд╣реИ - рд╣рдо рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рддреНрдп рд╣реИ рддреЛ рд╣рдо рдЬреЛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕реЗ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВред
https://github.com/rust-lang/rust/blob/21f26849506c141a6760532ca5bdfd8345247fdb/src/librustc_resolve/macros.rs#L955 -L987

@erickt рдиреЗ рдХреБрдЫ рдХреЛрдб рднреА рд▓рд┐рдЦреЗ рдЬреЛ рдЙрд╕реА рдХрд╛рд░рдг рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ: рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдЧрд▓рдд рд╣реЛрдиреЗ рдкрд░ рдмреНрд░реЗрдХ рдЖрдЙрдЯ рд╣реЛ рдЬрд╛рдирд╛ред рдЖрдк рдЗрд╕реЗ рддрддреНрдХрд╛рд▓-рдмрдВрдж-рдмрдВрдж рдпрд╛ let _: Option<()> = try { ... None?; .. }; рд╕рд╛рде рдирдХрд▓реА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рдмрд╣реБрдд рд╣реИрдХреА рд╣реИрдВред

@withboats @nrc @joshtriplett рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдм рддрдХ рд▓рд╛рдП рдЧрдП рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ?

рдкрд┐рдВрдЧ @withboats @nrc @joshtriplett :) - рдкрд┐рдЫрд▓реА рдмреИрдардХ рдореЗрдВ рд╣рдордиреЗ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдХрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЙрдирдХреА рд╕рдВрд░рдЪрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗред

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

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

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

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд░реЗрдЯ рдХреЛ рдвреВрдВрдвреЗрдВ рдФрд░ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ рддрд╛рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

@withboats рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝реА рдЧрдИ рдХрдИ рдЖрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рдЖрдЧреЗ рдмрдврд╝реВрдВрдЧрд╛ рдФрд░ рдпрд╣рд╛рдВ рдмреЛрд▓реНрдб рд░рд╣реВрдВрдЧрд╛:

@rfcbot рд░рджреНрдж рдХрд░реЗрдВ
@rfcbot рд╕реНрдердЧрд┐рдд

@joshtriplett рдкреНрд░рд╕реНрддрд╛рд╡ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред

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

  • [ ] @рд╕реЗрдВрдЯреНрд░рд┐рд▓
  • [ ] @ рдЕрдЯреБрд░реЙрди
  • [ ] @cramertj
  • [ ] @eddyb
  • [x] @joshtriplett
  • [ ] @nikomatsakis
  • [ ] @ рдПрдирдЖрд░рд╕реА
  • [ ] @pkfelix
  • [ ] @scottmcm
  • [x] @ рдирд╛рд╡реЛрдВ рдХреЗ рдмрд┐рдирд╛

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рдЪрд┐рдВрддрд╛ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рд╣реИред

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

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

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

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

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

loop + рдкреАрдЫреЗ break рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдореЗрдВ рдпрд╣ рдкрд╕рдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрд░рд╛рджреЗ рдХреЛ рдПрдХ рдРрд╕реЗ рдЯреВрд▓ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВ рдЬреЛ рдирд┐рдпрдВрддреНрд░рдг-рдкреНрд░рд╡рд╛рд╣ рдХреА рдПрдХ рдЕрд▓рдЧ рд╢реИрд▓реА рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рдорд╛рди рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ loop рдирд┐рд░реНрдорд╛рдг рднреА рд╣реИ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдВ while true { ... } рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдРрд╕рд╛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдЗрд░рд╛рджреЗ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реЛрддрд╛ рд╣реИред

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

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

@cramertj рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдереЛрдбрд╝рд╛ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдБред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдФрд░ @withboats / @joshtriplett рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдареАрдХ рд╡рд┐рдкрд░реАрдд рдХрд╣ рд░рд╣реЗ рд╣реИрдВ?

(fwiw, рдореИрдВ @withboats /@joshtriplett рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ)

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

рдореИрдВ @withboats рд╕реЗ рд╕рд╣рдордд рдХрд░реЗрдЧреА рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ, рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИред

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

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

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

рдореИрдВ рдЖрдЧреЗ рдмрдврд╝реВрдВрдЧрд╛ рдФрд░ рдпрд╣рд╛рдВ рдмреЛрд▓реНрдб рд░рд╣реВрдВрдЧрд╛:

@rfcbot рд░рджреНрдж рдХрд░реЗрдВ

@scottmcm рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред

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

рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдереНрд░реЗрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди break; рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдХреНрд╖реНрдпрд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ рдХреБрдЫ рдЕрд░реНрдереЛрдВ рдореЗрдВ рд▓реЗрдмрд▓ рдХрд┐рдП рдЧрдП loop s рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЧреБрдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдмрдирд╛рддреЗ рд╣реИрдВред

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

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

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

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЪреВрдВрдХрд┐ рдЖрдо рд╕рд╣рдорддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдХрдард┐рди рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд╣рд┐рдд рдореЗрдВ, рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рд╣рдо try { ... } рдкрд░ рдХрд╛рдо рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде https://github.com рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рддреЗрдЬ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ @petrochenkov рдХреЗ EXPR is PAT рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде)ред

рдорд╛рдлрд╝ рдХрд░реЗрдВ, рдЕрдм рдЗрд╕рдХреА рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рд╣реИ? рд╣рдо рдореЗрдВ рд╣реИрдВ FCP рдпрд╛ рдирд╣реАрдВ?

@mark-im рдЪреВрдБрдХрд┐ proposed-final-comment-period рдпрд╛ final-comment-period рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд▓реЗрдмрд▓ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдирд╣реАрдВ рд╣реИрдВ, рд╣рдо FCP рдпрд╛ рдПрдХ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред

(рдФрд░ рд╣рдо рдореЗрдВ рдХрднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ FCP, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдерд╛ FCP рд╕рднреА рд▓реЗрдХрд┐рди рддреАрди рдмрдХреНрд╕реЗ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд╕рд╛рде)

@scottmcm

рдореИрдВ рдЖрдЧреЗ рдмрдврд╝реВрдВрдЧрд╛ рдФрд░ рдпрд╣рд╛рдВ рдмреЛрд▓реНрдб рд░рд╣реВрдВрдЧрд╛:

@joshtriplett рдХреЗ рд╢рдмреНрджреЛрдВ рдХреА рдпрд╣ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореИрдВрдиреЗ рдмрд╣реБрдд рд╡реНрдпрдВрдЧреНрдпрд╛рддреНрдордХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝реАред рд▓реИрдВрдЧ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рдХреЗ рд░реВрдк рдореЗрдВ, рдХреГрдкрдпрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЕрдиреНрдп рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВред

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

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЪреАрдЬреЛрдВ рдХреЛ рдзреАрдореЗ, рдХрдо-рд╕рд╣рдЬ рдФрд░ рдХрдо-рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ?

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

@nrc рдХреЗ рд╣реГрджрдп рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ label_break_value рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реВрдВред
рдореЗрд░реА рд░рд┐рдкреЛрд░реНрдЯ https://github.com/rust-lang/rust/issues/48594#issuecomment -421625182 рдореЗрдВ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

@rfcbot рдорд░реНрдЬ
@rfcbot рдЪрд┐рдВрддрд╛ test

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ @joshtriplett рдФрд░ @withboats рдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдХрд┐рд╕реА рднреА рдЪрд┐рдВрддрд╛ рдХреЛ рдЙрдард╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдореИрдВ рдРрд╕реА рдЪрд┐рдВрддрд╛ рджрд░реНрдЬ рдХрд░реВрдВрдЧрд╛ред рдЬрдм рд╡реЗ рдореБрдЭрд╕реЗ рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдРрд╕реА рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдЬрдм рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдиреЗ рдЕрдкрдиреА рдЪрд┐рдВрддрд╛ рд╡реНрдпрдХреНрдд рдХреА рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рдЙрдард╛рдКрдВрдЧрд╛ред

@rfcbot рдЪрд┐рдВрддрд╛ рджреЗрдирд╛-рдирд╛рд╡-рдФрд░-рдЬреЛрд╢-рд╕рдордп-рд╕реЗ-рдЙрдард╛рдирд╛-рдХрд┐рд╕реА рднреА-рдЪрд┐рдВрддрд╛-рд╡реЗ-рд╣реЛ рд╕рдХрддрд╛ рд╣реИ-рдЕрднреА рднреА-рд╣реИ

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдиреНрдп рд╕рднреА рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреГрдкрдпрд╛ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рдЖрдЧреЗ-рдкреАрдЫреЗ рд░рджреНрдж рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ... рдЕрдЧрд░ рдЖрдкрдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреБрдЫ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдмрд╕ рдЙрд╕рдХреЗ рд▓рд┐рдП рдЪрд┐рдВрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

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

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

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

  • рдмреНрд▓реЙрдХ рдХрд░рдирд╛ (https://github.com/rust-lang/rust/issues/48594#issuecomment-451673194)
  • FIXME-in-tests (https://github.com/rust-lang/rust/issues/48594#issuecomment-451672226)
  • рджреЗ-рдиреМрдХрд╛рдУрдВ рдФрд░ рдЬреЛрд╢-рдЯрд╛рдЗрдо-рдЯреВ-рдЙрдард╛рдиреЗ-рдХрд┐рд╕реА рднреА-рдЪрд┐рдВрддрд╛рдУрдВ-рд╡реЗ-рд╢рдХреНрддрд┐-рдЕрднреА рднреА рд╣реИ рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ https://github.com/rust-lang/rust/issues/48594#issuecomment -+рекрел,резрем,ренрей,реиреореи
  • https://github.com/rust-lang/rust/issues/48594#issuecomment -632960804 рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

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

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

@rfcbot рдЪрд┐рдВрддрд╛ рдЕрд╡рд░реБрджреНрдз

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

@rfcbot рдирд╛рд╡реЛрдВ-рдФрд░-рдЬреЛрд╢-рд╕рдордп-рд╕реЗ-рдЙрдард╛рдиреЗ-рдХрд┐рд╕реА рднреА-рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдВ-рд╡реЗ-рд╣реЛ рд╕рдХрддрд╛ рд╣реИ-рдЕрднреА рднреА-рд╣реИ

рдЕрдЧрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ: рдЬрд╝рд┐рдЧ рдореЗрдВ рднреА рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ ред

5 рдЬрдирд╡рд░реА, 2019 09:18:29 рдкреАрдПрд╕рдЯреА рдкрд░, рдордЬрджрдХ Farrokhzad [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:

@rfcbot рд╕рдВрдХрд▓реНрдк
рджреЗрдирд╛-рдирд╛рд╡-рдФрд░-рдЬреЛрд╢-рд╕рдордп-рд╕реЗ-рдЙрдард╛рдирд╛-рдХрд┐рд╕реА рднреА-рдЪрд┐рдВрддрд╛-рд╡реЗ-рд╣реЛ рд╕рдХрддрд╛ рд╣реИ-рдЕрднреА рднреА-рд╣реИ

рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдЙрдард╛рдпрд╛ рд╣реИ, рдФрд░ рд╡реЗ "рдпрд╣ рднрд╛рд╖рд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рд╡реЗ рдЪрд┐рдВрддрд╛рдПрдВ рджреВрд░ рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рд╣реИрдВред

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

@joshtriplett

рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдЙрдард╛рдпрд╛ рд╣реИ, рдФрд░ рд╡реЗ "рдпрд╣ рднрд╛рд╖рд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рд╡реЗ рдЪрд┐рдВрддрд╛рдПрдВ рджреВрд░ рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рд╣реИрдВред

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдорддрд▓рдм рдЙрдиреНрд╣реЗрдВ @rfcbot рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡ рд░рджреНрдж рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдмреЙрдЯ рдкрдВрдЬреАрдХреГрдд рдкреБрд░рд╛рдиреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рджреЗрдЦреЗрдЧрд╛ред рдореИрдВрдиреЗ рдпрд╣ рдЪрд┐рдВрддрд╛ рдЗрд╕рд▓рд┐рдП рдЙрдард╛рдИ

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

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ рдпрд╛ рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рд╣реИ; рдпрд╣ рдмрд▓реНрдХрд┐ рд╕рдЯреНрдЯрд╛ рд▓рдЧрддрд╛ рд╣реИ (рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдХрд┐ "рдбрд┐рдЬрд╛рдЗрди рдкрд░ рд╕рд╣рдордд рд╣реЛрдиреЗ рдореЗрдВ рдХрдИ рд╕рд╛рд▓ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ") рдФрд░ break 'label expr рдХрдо рд▓рд╛рдЧрдд рд╡рд╛рд▓реЗ рд╕рдорд╛рдзрд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдХреНрд░реЛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдкрд░реЗ рд▓рд╛рдн рднреА рд╣реИрдВ рд╡рд┐рд╕реНрддрд╛рд░ред

_рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдиреНрдп рд╕рднреА рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреГрдкрдпрд╛ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рдЖрдЧреЗ-рдкреАрдЫреЗ рд░рджреНрдж рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ... рдЕрдЧрд░ рдЖрдкрдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреБрдЫ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдмрд╕ рдЙрд╕рдХреЗ рд▓рд┐рдП рдЪрд┐рдВрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред_

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

@joshtriplett рд░реБрдЪрд┐ рдХреЗ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдЙрди рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛? рдореИрдВ рдореВрд▓ рдЖрд░рдПрдлрд╕реА рдереНрд░реЗрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рджред

@rfcbot рдЪрд┐рдВрддрд╛ рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕ рдФрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди/рдкреНрд░рджрд░реНрд╢рди (рдХрдо рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕ рдХрд╛ рдЧреИрд░-рдЬрдВрдЧ рдЙрджрд╛рд╣рд░рдг https://gist.github.com/SoniEx2/fc5d3614614e4e3fe131#file-special-lua)

idk рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рдЕрдзрд┐рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

(рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреИрд╕реЗ рдХреБрдЫ "desugaring" (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ desugaring рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рдкрд░реАрдд рд╣реИ - goto рдПрдХ рдЖрджрд┐рдо рд╣реИ, goto рдореЗрдВ desugar рдХреЛ рд▓реВрдк рдХрд░рддрд╛ рд╣реИ) рдХрд╛рдлреА рднрдпрд╛рдирдХ рд╣реИ)

(рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд▓реБрдЖ рдореЗрдВ рдХреБрдЫ рднреА рд▓реЗрдмрд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЖрдкрдХреЛ рдЧреЛрдЯреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмреНрд░реЗрдХ-рдмреНрд▓реЙрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдХреНрд▓реАрдирд░ "рдбрд┐рд╕реБрдЧрд░рд┐рдВрдЧ" рдХреЗ рд╕рд╛рдеред)

@rfcbot рдЪрд┐рдВрддрд╛ рдЪрд╛рд╣рд┐рдП-рдХрд░реАрдм-рдирд╣реАрдВ-рд╡рд┐рд▓рдп

(рдЬреИрд╕рд╛ рдХрд┐ рдХрд▓рд╣ рдкрд░ @centril рджреНрд╡рд╛рд░рд╛

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

fn main() {
    'foo: for _ in 0..1 {
        println!("break");
        break 'foo;
        println!("broken");
    }
}

рддреЛ рдПрдХ рддрд░рдл, рд╣рдореЗрдВ рдЗрд╕реЗ рд╕реНрдерд┐рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рднрд╛рд╖рд╛ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдмрд╕ for _ in 0..1 рдХреЛ рдЦрддреНрдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рджреВрд╕рд░реА рддрд░рдл рд╣рдореЗрдВ рдЗрд╕реЗ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЖрдЬ рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ (рдХрдм рдХреЗ рд▓рд┐рдП) рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ) рдФрд░ рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдереЛрдбрд╝реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд▓реЗрдмрд▓ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИред

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

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

@nrc

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

    'foo: for _ in 0..1 {
        break 'foo;
    }

рддреЛ рдПрдХ рддрд░рдл, рд╣рдореЗрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рднрд╛рд╖рд╛ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдмрд╕ for _ in 0..1 рдЦрддреНрдо рдХрд░ рд░рд╣рд╛ рд╣реИ,

'a: for _ in 0..1 { break 'a } рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╕реНрдкрд╖реНрдЯ рд▓рдХреНрд╖реНрдп рдХрд┐рд╕реА рдХреЛ рдХрднреА рднреА 'a: { ... break 'a e; ... } рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рд╣реИ; рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдореЗрдВ рдХрдЪрд░рд╛ IR рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЦрд╛рдореА рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк рдЪреЗрдХрд░, MIR, рдФрд░ LLVM рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдмрд┐рдЧрдбрд╝рддреЗ рд╕рдВрдХрд▓рди рд╕рдордп (рдХрдо рд╕реЗ рдХрдо LBV рдХреА рддреБрд▓рдирд╛ рдореЗрдВ) рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рджреВрд╕рд░реА рдУрд░ рд╣рдореЗрдВ рдЗрд╕реЗ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЖрдЬ рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ (рдЬрдм рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ) рдФрд░ рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

  1. 'a: for _ in 0..1 { break 'a }
  2. 'a: { ... break 'a e; ... }

рдпреЗ рд╕рдорд╛рди рджрд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВред рдЬрдмрдХрд┐ рдкрд╣рд▓рд╛ рдпрдХреАрдирди рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╣реИ, рджреВрд╕рд░рд╛ рдпрдХреАрдирди рдирд╣реАрдВ рд╣реИред

рдереЛрдбрд╝реЗ loop {} рдмрдирд╛рдо while true {} (рджреА рдЧрдИ loop рдПрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдмрдХрд┐ while рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ)

@nrc рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ: https://github.com/rust-lang/rust/issues/48594#issuecomment -450246249

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, break; рдФрд░ continue; рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрд▓рдЧ рд╣реИред рдЗрд╕ рдХрд╛рд▓реНрдкрдирд┐рдХ рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

some_macro! {
   ...
   break;
   ...
}

рдпрджрд┐ some_macro рд╡рд┐рд╕реНрддрд╛рд░ 'a { ... } , рддреЛ рдЗрд╕рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ 'a: for _ 0..1 { ... } рд╡рд┐рд╕реНрддреГрдд рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред

@ SonyEx2

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЪреАрдЬреЛрдВ рдХреЛ рдзреАрдореЗ, рдХрдо-рд╕рд╣рдЬ рдФрд░ рдХрдо-рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ?

рдХреГрдкрдпрд╛ рдЕрдкрдиреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдЕрдзрд┐рдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдФрд░ рдЙрддреНрдкрд╛рджрдХ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕

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

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдЪреАрдЬреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ:

1) рдпрд╣ рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рд░рд╕реНрдЯ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореМрдЬреВрдж рд╣реИрдВ рдЬреИрд╕реЗ 'a: loop { if x { break 'a; } break; } ред

2) рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмреНрд▓реЙрдХ рд░рд┐рдЯрд░реНрди рдХреЗ рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ: рд▓реВрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред

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

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

рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдореМрдЬреВрдж рд╣реИрдВ?

рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ, рдЖрдИрдПрдордУ concern blocking рдпрд╛ concern should-close-not-merge -рд╕реНрдЯрд╛рдЗрд▓ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ: рдпрд╣ рдЪрд┐рдВрддрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рдпрд╛ рдХреБрдЫ рднреА рдЬрд┐рд╕реЗ рд╣рдо рд╣рд▓ рдХрд░рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ- - рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдкрд░рдорд╛-рдЕрд╡рд░реЛрдзрдХ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ rfcbot рдХреЗ рд╕рд░реЛрдХрд╛рд░ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдкрд░рдорд╛-рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд/рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд╕рдордЭ рдпрд╣ рдереА рдХрд┐ рдЖрдкрдХреА рдЕрд╕рд╣рдорддрд┐ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЪреЗрдХрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдерд╛, рдФрд░ рдЙрди рдЪрд┐рдВрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ, рдЪрд░реНрдЪрд╛-рдпреЛрдЧреНрдп рдореБрджреНрджреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред

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

рдпрджрд┐ рдЗрд╕ рдмрд╛рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЪрд┐рдВрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреНрдп рднрд╛рдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддреА рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЪрд░реНрдЪрд╛/рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ try { ... } рджреНрд╡рд╛рд░рд╛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ" рдпрд╛ "рдпрд╣ рдЕрди- рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ- рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░-рдмрдбрд╝реЗ рдХрд╛рд░реНрдп") рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдлрд╛рдЗрд▓ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ рд╣реЛрдЧрд╛ред

@Cramertj рдЕрдЧрд░ @Centril рдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реЛрддрд╛ рддреЛ

"рдЗрд╕реЗ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП" рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк рдХреНрдпрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдВрдЧреЗ , рдпрджрд┐ рдХрд┐рд╕реА рдиреЗ "рдХреНрд▓реЛрдЬрд╝" рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП rfcbot рдХреЗ рд╕рд╛рде P-FCP рджрд╛рдпрд░ рдХрд┐рдпрд╛ рд╣реИ? "рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдмреЛрдзрд┐рдд / рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ" рдХреЗ рдмрд░рд╛рдмрд░ рд▓рдЧрддрд╛ рд╣реИ "рдпрд╣ рдПрдХ рджрд┐рди рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╡рд╣рд╛рдВ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?"ред рдпрд╣ рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реИ "рдЗрд╕реЗ рдХрднреА рд╕реНрдерд┐рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рднрд╛рд╖рд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП"ред

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд╕рдордЭ рдпрд╣ рдереА рдХрд┐ рдЖрдкрдХреА рдЕрд╕рд╣рдорддрд┐ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЪреЗрдХрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдерд╛

рдлрд┐рд░ рд╣рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЪреЗрдХрдмреЙрдХреНрд╕ рдЪреЗрдХ рдХрд┐рдП рдЬрд╛ рд╕рдХреЗрдВред

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирдВрдд-рдлрд┐рд▓рд┐рдмрд╕реНрдЯрд░ рдПрдХ рдЙрддреНрдкрд╛рджрдХ рддрд░реАрдХрд╛ рд╣реИред

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

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

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

рдореИрдВ рд╡рд╣реА рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЫреВрдЯ рдЧрдпрд╛ рд╣реИ: https://github.com/rust-lang/rust/issues/48594#issuecomment -451795597

рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереАред

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

рдХреНрдпрд╛ rfcbot рдПрдВрдЯреА-рдЪрд┐рдВрддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ?

@joshtriplett

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

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

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

рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдореЗрд░реЗ рдЙрдкрд░реЛрдХреНрдд рд╕рд╛рд░рд╛рдВрд╢ рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ, рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг (рдФрд░, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ, рдРрддрд┐рд╣рд╛рд╕рд┐рдХ!) рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдХрдореА рд╣реИред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдореМрдЬреВрджрд╛ rfcbot рдирд┐рдпрдореЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдХрд┐рдпрд╛ рдерд╛ "рдХреЛрдИ рдЪреЗрдХрдмреЙрдХреНрд╕ рдЖрдкрдХреА рдЕрд╕рд╣рдорддрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдмрд╣реБрдордд рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рд╕рджрд╕реНрдп рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ", рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЬрдм рд╡реЗ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдереЗ рддреЛ рдирд┐рдпрдореЛрдВ рдХрд╛ рдорддрд▓рдм рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдиреБрдЪрд┐рдд рдерд╛ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд╣реАрдВ рдФрд░ рдХрд┐рдпрд╛ рдерд╛)ред

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

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

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

TL; DR: рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдлрдВрд╕ рдЧрдП рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП-- рдореИрдВ рдЙрд╕ рдмрд╛рддрдЪреАрдд рдХреЛ рдХрд╣реАрдВ рдФрд░ рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдпрд╣рд╛рдВ рд▓рд┐рдВрдХ рдХрд░реВрдВрдЧрд╛ред рдЕрдиреНрдпрдерд╛, рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгреА рди рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирдИ рдЬрд╛рдирдХрд╛рд░реА рди рд╣реЛ рдЬрд┐рд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред

@cramertj

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

рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЙрд╕ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред

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

рдореБрдЭреЗ рдЕрдм рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдЙрджрд╛рд╣рд░рдг рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рд╕реЗ рд▓рд┐рдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдИ рдЕрдкреНрд░рддрд┐рд╖реНрдард┐рдд рдЕрднрд┐рд╡реНрдпрдВрдЬрдирд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдЗрд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд┐рддрдиреЗ рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ , рдЙрддрдирд╛ рд╣реА рдореИрдВ рдЦреБрдж рдХреЛ @withboats рд╕реЗ рд╕рд╣рдордд

(рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ: @nrc рдХрд╛ рдЯреЛрдХрд░рд╛ proc-macro-rules рдЬреЛ label_break_value рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред)

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

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

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

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

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

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

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

@joshtriplett

рдпрд╣ рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдИ рдЕрдкреНрд░рддрд┐рд╖реНрдард┐рдд рдЕрднрд┐рд╡реНрдпрдВрдЬрдирд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

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

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

@joshtriplett

рдореБрдЭреЗ рдЕрдм рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдИ рдЕрдкреНрд░рддрд┐рд╖реНрдард┐рдд рдЕрднрд┐рд╡реНрдпрдВрдЬрдирд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдЗрд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд┐рддрдиреЗ рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ _could_ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЙрддрдирд╛ рд╣реА рдореИрдВ рдЦреБрдж рдХреЛ @withboats рд╕реЗ рд╕рд╣рдордд

рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╢рд╛рдпрдж рдЦреЛрдж рд╕рдХрддреЗ рд╣реИрдВ?

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

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

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

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

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

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

рдХреЗрд╡рд▓ рд╡реНрдпрд╛рдХрд░рдг рдХреА рдкреНрд░рд╕реНрддреБрддрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рднрд╛рд╖рд╛ рдХрд╛ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рд╕рд┐рдХреБрдбрд╝ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред

рд╕рд╢рд░реНрдд рд╢рд╛рдЦрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рд╕реЗ рднрд╛рд╖рд╛ рдХреЗ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХреЛ рддрд░реНрдХрд╕рдВрдЧрдд рд░реВрдк рд╕реЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд╕реБрд╡рд┐рдзрд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛рддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рддрдЯрд╕реНрде рд╣реИред рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдпреВрдирд┐рдлрд╛рдИ рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдгреЛрдВ (bool рдХрд░рддреЗ рд╣реИрдВ, рдХрд┐рд╕реА рдХреЛ рднреА?) рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рд╣рдЯрдирд╛ рд╣реИред

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

(block foo
  (return-from foo "value"))

рдореЗрд░реА рд╕рдордЭ рдореЗрдВ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдо рд▓рд┐рд╕реНрдк рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕рдлрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рддрдЪреАрдд рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ рдЬреЛ рднрд╛рд╖рд╛ рдХреЛ рд╕реАрдЦрдирд╛ рдпрд╛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛рддреЗ рд╣реИрдВред

рд╕рдорд╛рд╡реЗрд╢ рд╣реИ

early return from block тКВ exceptions тКВ call/cc

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреЛрдЬрдирд╛ рдореЗрдВ return-from рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдХрд░рдг рд╕рдВрднрд╡ рд╣реИ:

(define call/cc call-with-current-continuation)

(define-syntax block
    (syntax-rules ()
        ((_ label statements ...)
            (call/cc (lambda (label) (begin statements ...))))))

(block foo
    (display "Visible text")
    (foo "value")
    (display "Phantom text"))

рдпреЛрдЬрдирд╛ рдореЗрдВ, call/cc рдХреЛ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдлрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдПрдХ рд╡рд╕реНрддреБ рддреИрдпрд╛рд░ рдХрд░рдиреА рд╣реЛрдЧреАред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк call/cc рдХреЛ рдПрдХ рдЧрд▓рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рдирддреЗ рд╣реИрдВ, рддреЛ рднреА рдЗрд╕рдиреЗ рднрд╛рд╖рд╛ рдХреЛ рдмреМрджреНрдзрд┐рдХ рдЕрд░реНрдереЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИред

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

рд╡рд╛рдкрд╕реА, рд╡рд┐рд░рд╛рдо рдФрд░ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

@jhpratt рдХреГрдкрдпрд╛ рдЕрдВрдХ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдкрдврд╝реЗрдВред

рдореИрдВрдиреЗ @Centril рдХреЗ рд╕реБрдЭрд╛рд╡ рдкрд░ IRLO рдкрд░ рдХреА рджреЛрд╣рд░рд╛рддреЗ рд╣реБрдП рдХрд╣рд╛:

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░реЗрд░рдгрд╛ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ (рд╕рд╛рдорд╛рдиреНрдп рд▓реВрдк-рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╡рд┐рдкрд░реАрдд):

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

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

рдореИрдВрдиреЗ рд╕реА ++ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрд╡рд▓реЛрдХрди рднреА рдХрд┐рдП, рдЬрд╣рд╛рдВ рд▓реЗрдмрд▓ рдмреНрд░реЗрдХ/рдЬрд╛рд░реА рдирд╣реАрдВ рд╣реЛрдирд╛ рдмрд╣реБрдд рджрд░реНрджрдирд╛рдХ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдВрдЧ-рдЬреИрд╕реЗ рдЗрдЯрд░реЗрдЯрд░реНрд╕ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдВрддрд░рд┐рдХ рд▓реВрдк рдХреЗ рдмрд╛рд╣рд░ рд╕рдВрднрд╛рд╡рд┐рдд-UB goto рдпрд╛ рд╕реНрдерд╛рдиреАрдп break рдкреНрд▓рд╕ рдПрдХ рд╕рд╢рд░реНрдд continue рдмрд┐рдирд╛ рдмрд╛рд╣рд░реА рд▓реВрдк рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдХрдо рд╕реЗ рдХрдо рд╕реЗрд▓реНрд╕рд┐рдпрд╕ рдкрд░ ++ рдПрдХ рдЙрдзрд╛рд░-рдЪреЗрдХрд░ рдХреА рдХрдореА рдЗрдирд▓рд╛рдЗрди рд▓реИрдореНрдмреНрдбрд╛ рдЪрд╛рд▓ рдХрдо рджрд░реНрджрдирд╛рдХ рд╣реИ, рдЬреЛ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ, рд╕рдорд░реНрдерди LVB, рдЗрдирд▓рд╛рдЗрди рд▓реИрдореНрдмреНрдбрд╛ рдореЗрдВ рд▓реМрдЯрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ LLVM рдХреЗ inliner рджреНрд╡рд╛рд░рд╛ LVB рдХреА рддрд░рд╣ рдХреБрдЫ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдмрдирд╛рддрд╛ рд╣реИред рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ... рд░рд╕реНрдЯ рдореЗрдВ рдХреБрдЫ рдЬреНрдпрд╛рджрд╛ рд╣реА рд╕рдВрджрд┐рдЧреНрдзред

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рд╣рдо рдкреВрд░реНрд╡ рдХрд▓рд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреЛрдЯрд▓рд┐рди рдпрд╣ рд╕рдЯреАрдХ рд╕реБрд╡рд┐рдзрд╛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, return<strong i="24">@label</strong> expr; ред

c'ish рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдореИрдВ рдЕрдХреНрд╕рд░ рд▓реЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЧреЛрдЯреЛ рдХреЗ рднреА, рд▓реВрдк рдХреЗ рддрд╣рдд рд╕реНрдерд┐рд░ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдбреАрдмрдЧрд░ рдкрд╣рдЪрд╛рди рд╕рдХрддрд╛ рд╣реИ break function:label ред
рдмреНрд░реЗрдХ рдкрд░ рдЖрдо рд╕рд╣рдорддрд┐ рдХреЗ рдмрд┐рдирд╛ рднреА, рд▓реЗрдмрд▓ рдЕрдЪреНрдЫреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

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

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

0x401114 рдкрд░ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ 1: рдлрд╝рд╛рдЗрд▓, рдкрдВрдХреНрддрд┐ 1ред
рдмреЗрдЬреЛрдбрд╝ рдмреЛрд▓реА

echo "void main() { } void hmm() { umm: return; }" | gcc -g -x c -;
gdb -ex "b hmm:'umm'" -ex "b hmm:'umm" -batch ./a.out

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

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореМрдЬреВрджрд╛ рд▓реВрдк рд▓реЗрдмрд▓ рдХреЗ рдХрд╛рд░рдг рдЬрд╣рд╛рдЬ рд╢рд╛рдпрдж рдЗрд╕ рдкрд░ рд░рд╡рд╛рдирд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред

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

let value = 'ret: {
    // ...
};
assert!(postcondition(value));
return value;

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХ рдЕрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ return рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдореИрдВрдиреЗ рдЖрдЬ рд╕реБрдмрд╣ рд╕реНрд╡рддрдВрддреНрд░

рдореИрдВ рдЖрдЬ рдЗрд╕рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ async рдмреНрд▓реЙрдХ рдореЗрдВ _super_ рдХрд╛рдо рдореЗрдВ рдЖрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ try_blocks рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд╣реЛрдиреЗ рдкрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рд▓рдЧрддрд╛ рд╣реИ:

#![feature(try_blocks, label_break_value)]

fn main() {
    let _: Result<(), ()> = try {
        'foo: {
            Err(())?;
            break 'foo;
        }
    };
}
error[E0695]: unlabeled `break` inside of a labeled block
 --> src/main.rs:6:20
  |
6 |             Err(())?;
  |                    ^ `break` statements that would diverge to or through a labeled block need to bear a label

error: aborting due to previous error

рдХреЛрд╢рд┐рд╢ рдмреНрд▓реЙрдХ рдПрдХ рдЧрд▓рддреА рд╣реИред

... рдХреНрдпрд╛ рдЖрдк ? рд╣реА рд▓реЗрдмрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ? (рдЬреИрд╕рд╛ рдХрд┐ Err(()) 'foo?; )

рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдХреЛрд╢рд┐рд╢ рдмреНрд▓реЙрдХ рдПрдХ рдЧрд▓рддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЪрд░реНрдЪрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдпрд╣рд╛рдВ рдЖрдЧреЗ рдФрд░ рдЖрдЧреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдХрдо рд╣реИ, рдЬрд╣рд╛рдВ 'foo рдореЗрдВ рдХреЛрдб рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдФрд░ рдХрдИ ? s рд╣реИрдВред

@ SonyEx2

рдХреЛрд╢рд┐рд╢ рдмреНрд▓реЙрдХ рдПрдХ рдЧрд▓рддреА рд╣реИред

рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рдЕрдиреБрдЪрд┐рдд рд╣реИред @jonhoo рдХреА рдЯрд┐рдкреНрдкрдгреА рдПрдХ (рд╕рдВрднрд╡рддрдГ) рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рдмрд╛рддрдЪреАрдд рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣реА рдереАред try рдмреНрд▓реЙрдХ (рдпрд╛ рд▓реЗрдмрд▓-рдмреНрд░реЗрдХ-рд╡реИрд▓реНрдпреВ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕реА рдХреА рд░рд╛рдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдСрдкрд░реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрдиреНрд╣реЗрдВ Err(()) 'foo?; рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@jonhoo рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЖрдк рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ try рдХреИрд╕реЗ рдбрд┐рд╕реБрдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рд╡рд╣рд╛рдВ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реБрдзрд╛рд░реЛрдВ рдХреА рдЪрд░реНрдЪрд╛ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ?

RFC рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐

'BLOCK_LABEL: { EXPR }

рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЪреАрдиреА рдХреЗ рд▓рд┐рдП рд╣реИ

'BLOCK_LABEL: loop { break { EXPR } }

рдореИрдВрдиреЗ рдЙрд╕ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред

#![feature(try_blocks, label_break_value)]

fn main() {
    let _: Result<(), ()> = try {
        'foo: loop {
            break {
                Err(())?;
                break 'foo;
            }
        }
    };
}

@nikomatsakis @ciphergoth рдиреЗ https://github.com/rust-lang/rust/issues/72483 рдХреЗ рд░реВрдк рдореЗрдВ рджрд╛рдпрд░ рдХрд┐рдпрд╛

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

(рдпрд╣ рдореМрдЬреВрджрд╛ рдлреЙрд░реНрдо рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, break рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред)

@rfcbot рд╕рдорд╛рдзрд╛рди рдЪрд╛рд╣рд┐рдП-рдХрд░реАрдм-рди-рд╡рд┐рд▓рдп
@rfcbot рдиреЗ рд╕рдореАрдХреНрд╖рд╛ рдХреА

@joshtriplett рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ async рдмреНрд▓реЙрдХ рдореЗрдВ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рдкрд╛рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ "рдЬрд▓реНрджреА рд╡рд╛рдкрд╕реА" рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп:

async {
  // do thing a
  if thing_a_failed {
    // handle specially (note, _not_ ?)
  } else {
    // do thing b
    if thing_b_failed {
      // handle specially (note, _not_ ?)
    } else {
      // do thing c, etc..
    }
  }
}

рдореИрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдБ:

async {
  'block {
  // do thing a
  if thing_a_failed {
    // handle specially (note, _not_ ?)
    break 'block;
  }

  // do thing b
  if thing_b_failed {
    // handle specially (note, _not_ ?)
    break 'block;
  }

  // do thing c, etc..
  }
}

рдпрд╣ рдмрдбрд╝реЗ рдХрд░реАрдиреЗ рд╕реЗ рд╕рдорд╛рди рд╣реИ рдХрд┐ рдЖрдк return рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рдВрд╕/рдХреНрд▓реЛрдЬрд╝рд░ рдореЗрдВ рдФрд░ рд▓реВрдкреНрд╕ рдореЗрдВ continue/break рд╕рд╛рде рдЬрд▓реНрджреА-рд╡рд╛рдкрд╕реА рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмреЗрд╢рдХ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореБрдЭреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдмреНрд▓реЙрдХ ( async 'block { рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛?) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдиреЗрд╕реНрдЯреЗрдб if-s рдХреЛ рд╣рд░рд╛ рджреЗрддрд╛ рд╣реИред

async рдмреНрд▓реЙрдХ рдХреЛ рд╕реАрдзреЗ рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рдЧрддрд╛ рд╣реИред

@rfcbot FCP рд░рджреНрдж рдХрд░реЗрдВ

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

@nikomatsakis рдкреНрд░рд╕реНрддрд╛рд╡ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ async рдмреНрд▓реЙрдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдирд╣реАрдВ рд╣реИ: RFC рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд╛ рдЕрднреА рднреА рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ рдЕрд░реНрдерд╛рдд

'BLOCK_LABEL: { EXPR }

рдмрд╕ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЪреАрдиреА рдХреЗ рд▓рд┐рдП рд╣реИ

'BLOCK_LABEL: loop { break { EXPR } }

рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдмрд┐рдирд╛ рд▓реЗрдмрд▓ рд╡рд╛рд▓рд╛ рдмреНрд░реЗрдХ рдпрд╛ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИ рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓реВрдк рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рдПрдЧрд╛ EXPR рдХреЗ рдЕрдВрджрд░ рд╡рд░реНрдЬрд┐рдд рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдк (рдкреНрд░рд╛рд░рдВрднрд┐рдХ) return async рдмреНрд▓реЙрдХ рд╕реЗ break рд▓реЗрдмрд▓ рдХреЗ рдмрдЬрд╛рдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, return async рдмреНрд▓реЙрдХ рдХреЛ рд▓реЗрдмрд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ:

let fut = async {
    return 42;
    0
};

println!("{}", fut.await); // prints 42

( рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди )

@WaffleLapkin рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдБ рд╕рд┐рд░реНрдл рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рдерд╛ рдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрднреА рднреА рдХреЛрдб рдХреЗ _skip_ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ (рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рди рдЪрд▓рд╛рдПрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рдкрд╕ рди рдЖрдПрдВ), рд▓реЗрдХрд┐рди async _specifically_ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдЗрд╕рд╕реЗ рдХрдо рд╣реИ рдореИрдВрдиреЗ рд╢реБрд░реВ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛ред

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

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

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

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

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

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

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