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

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


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


рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг


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


рдПрдХ рд╢рдмреНрдж рдореЗрдВ


рдореИрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдФрд░ рдирд╛рдо &mut рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ &my , &only рдпрд╛ &uniq рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЛ рджреВрд░ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ ( &uniq рдореБрдЭреЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛)ред рдпрджрд┐ рдХреЗрд╡рд▓ рдХреЛрдИ рдХреАрд╡рд░реНрдб mut рдирд╣реАрдВ рдерд╛ред


рджрд╛рд░реНрд╢рдирд┐рдХ рдордХрд╕рдж


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


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


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


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


рд╢реИрдХреНрд╖рд┐рдХ рдордХрд╕рдж


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореМрдЬреВрджрд╛ рдирд┐рдпрдореЛрдВ рдХреЛ рд╕рдордЭрдирд╛ рдЬреНрдпрд╛рджрд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, &mut T рдХрд┐рд╕реА рднреА рд╕рд╛рдЭрд╛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХрд╛ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрджрдирд╛рдо &mut T рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдХрд┐ &T рдХрд┐рд╕реА рднреА рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИ, рдЬреЛ Cell рдЬреИрд╕реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдХрд╛рд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рдФрд░ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╕рд╣рдордд рд╣реЛрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреНрдпрд╛ рдХрд╣рд╛ рдЬрд╛рдП ("рдкрд░рд╕реНрдкрд░ / рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд▓рд┐рдВрдХ" рд╕рдмрд╕реЗ рдЖрдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд╣реИ)ред


рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рдкреНрд░рдХрд╛рд░ рдЬреИрд╕реЗ &my T рдпрд╛ &only T рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЕрдиреВрдареА рдХрдбрд╝реА рд╣реИ - рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рджреЛ рдХреЛ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдФрд░ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рдУрд░реНрдереЛрдЧреЛрдирд▓ рдЪреАрдЬ рд╣реИ: рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕реЗ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рд╕рд╣реА рд╣реИред рдФрд░ &T рдкреНрд░рдХрд╛рд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рд╕рд╛рдЭрд╛ рд▓рд┐рдВрдХ рд╣реИ ред RFC PR # 58 рд╕рдорд╛рди рддрд░реНрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдпрд╣рд╛рдВ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛ред


рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдордХрд╕рдж


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


рд╕рдВрджрд░реНрднреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдирд╣реАрдВ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ


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


 struct Env { errors: &mut usize } 

рдЕрдм рдореИрдВ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ (рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ):


 let mut errors = 0; let env = Env { errors: &mut errors }; ... if some_condition { *env.errors += 1; } 

рдареАрдХ рд╣реИ, рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдореИрдВ рдПрдХ рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ env.errors рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЪреВрдВрдХрд┐ env рдЪрд░ рдХреЛ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп & рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:


 let mut errors = 0; let env = Env { errors: &mut errors }; helper(&env); fn helper(env: &Env) { ... if some_condition { *env.errors += 1; //  } } 

рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реИ рдирд╣реАрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ &Env рдПрдХ рд╕рд╛рдЭрд╛-рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдкреНрд░рдХрд╛рд░ ( рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ рд╣реИ: рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ ), рдФрд░ рдЗрд╕рд▓рд┐рдП env.errors рдПрдХ рдРрд╕реЗ рд╕реНрдерд╛рди рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ env рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрд▓рдЧ рд╕реЗ env.errors рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдХреЛрдб рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ env рдХреЛ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ &mut рд╕рдВрдХрд▓рдХ рдХреЛ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП &mut рд▓рд┐рдВрдХ ( рдЕрдиреБрд╡рд╛рджрдХ рдиреЛрдЯ: &mut ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ env рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рджреМрдбрд╝ рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрддреНрдкрд░рд┐рд╡рд░реНрддреА рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд╕реНрдкрд░ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ ):


 let mut errors = 0; let mut env = Env { errors: &mut errors }; helper(&mut env); 

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


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


рдХреНрд▓реЛрдЬрд░ рдХреЗ рд▓рд┐рдП рдЪреЗрдХрд┐рдВрдЧ рдЯрд╛рдЗрдк рдХрд░реЗрдВ


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


 fn foo(errors: &mut usize) { do_something(|| *errors += 1) } 

рдХреНрд▓реЛрдЬрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Env рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рджреЗрдЧрд╛:


 struct ClosureEnv<'a, 'b> { errors: &uniq &mut usize } 

&uniq рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВред рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджрд░реНрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ "рдЕрджреНрд╡рд┐рддреАрдп рд▓реЗрдХрд┐рди рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдкрд░рд╕реНрдкрд░" рд╕реВрдЪрдХред рдпрд╣ рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рддреЛ рдЙрд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ &mut &mut usize рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдмрджрд▓реЗ рдореЗрдВ errors рдХреЛ mut errors: &mut usize рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ mut errors: &mut usize ред


рдмрдВрдж рдХреНрд▓реЛрдЬрд░ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ


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


 trait Fn<A, R> { fn call(&self, ...); } trait FnMut<A, R> { fn call(&mut self, ...); } trait FnOnce<A, R> { fn call(self, ...); } 

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


 fn foo(&self, closure: FnMut<usize, usize>) { ... } fn foo<T: FnMut<usize, usize>>(&self, closure: T) { ... } 

рд╣рдо ... рд╢рд╛рдпрдж рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╢рд╛рдпрдж FnMut(usize) -> usize рддрд░рд╣ рдЪреАрдиреА рдЬреЛрдбрд╝реЗрдВ FnMut(usize) -> usize , рдпрд╛ рд╕рд╣реЗрдЬреЗрдВ - usize | -> рдЗрддреНрдпрд╛рджрд┐ред рдпрд╣ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣рдо рдореВрд▓реНрдп рд╕реЗ рд╕рдорд╛рдкрди рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдбреАрдПрд╕рдЯреА (рдбрд╛рдпрдирд╛рдорд┐рдХ-рд╕рд╛рдЗрдЬрд╝реНрдб рдЯрд╛рдЗрдкреНрд╕) рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ FnMut<usize, usize> рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд рд╣реИ, рдЗрд╕рд▓рд┐рдП рддрд░реНрдХ FnMut<usize, usize> рдПрдХ рд╡реИрдз FnMut<usize, usize> рд╣реИ рдФрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред


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


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


 fn foo(&self, mut closure: FnMut<usize, usize>) { let x = closure.call(3); } 

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


рдЕрдм рд╣рдо рд╢рд╛рдпрдж рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛ рд╣рдо рдХрд░ рд╕рдХрддреЗ рдереЗ || рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдПрдХ "рдХреБрдЫ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░" рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдмрд▓реНрдХрд┐ рдПрдХ "рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдПрдХ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдорд╛рди рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ" рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЙрд▓рд░ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:


 fn foo(&self, closure: &mut FnMut<usize, usize>) { let x = closure.call(3); } 

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдпрд╣ рджреБрдирд┐рдпрд╛ рдХрд╛ рдЕрдВрдд рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдмрдврд╝рддреА рд╣реБрдИ рд╡рд┐рдХреГрддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдФрд░ рдХрджрдо рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рдЪрд░реЛрдВ рдФрд░ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рдмреАрдЪ рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЧреБрдЬрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЕрдиреНрдп рдПрдкреАрдЖрдИ рднрд╛рдЧреЛрдВ


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


 let socket = Socket::new(); socket.read() // :    

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдореЗрд░реЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдРрд╕рд╛ рдХреЛрдб рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк &Socket рд╕реЗ рдкрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рднреА рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рддрдм рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рдкрдврд╝реЗрдЧрд╛ рдЬреИрд╕реЗ "рд╕рд╛рдЭрд╛ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд▓рд┐рдВрдХ рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ", рдЬрд┐рд╕реЗ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдорд╛рдирддрд╛ рд╣реВрдВред


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


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


mut рдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд╡рд░реНрддрдорд╛рди рдирд┐рдпрдореЛрдВ рдореЗрдВ рдЬреЛ рдЕрд░реНрде рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЗрдирдХрд╛рд░ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рд╣реИ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдЗрд░рд╛рджрд╛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдЬрдм рдореИрдВ рдХреЛрдб рдкрдврд╝рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдЪрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдореИрдВ C ++ рдХреЛрдб рдкрдврд╝рдиреЗ рдореЗрдВ рднреА рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реВрдВ рдФрд░, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдХрднреА рдирд╣реАрдВ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдмрдбрд╝реА рдареЛрдХрд░ рд╣реИред (рдЬрдм рдореИрдВ рдЬрд╛рд╡рд╛, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдкрд╛рдпрдерди, рдпрд╛ рд░реВрдмреА рдореЗрдВ рдкрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реВрдВ рддреЛ рд╡рд╣реА рд╣реЛрддрд╛ рд╣реИред)


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


рд╡рд┐рдХрд▓реНрдк


рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рддреАрди рд╡рд┐рдХрд▓реНрдк рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ:


  1. рдПрдХ рдореИрдВрдиреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рдХреЗрд╡рд▓ "рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди" рдХреЛ рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддреЗ рд╣реИрдВред
  2. рдПрдХ рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рддреАрди рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рд╣реИрдВ: & , &uniq рдФрд░ &mut ред (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рд╣реИ рдЬреЛ рдЖрдЬ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЙрдзрд╛рд░ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдЪреЗрдХрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗред)
  3. рдПрдХ рдЕрдзрд┐рдХ рдХрдареЛрд░ рд╡рд┐рдХрд▓реНрдк, рдЬрд┐рд╕рдореЗрдВ рдЧреИрд░-рдореНрдпреВрдЯ рдЪрд░ рд╣рдореЗрд╢рд╛ рдЕрд▓рдЧ рдорд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:


     let mut errors = 0; let mut p = &mut errors; // ,  `p`   ,  `mut`. *p += 1; 

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


    рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рд╣рдордиреЗ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдХрд┐ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рд╛рдЭрд╛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдХрд▓рд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛, &mut рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИред



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


рдирд┐рд╖реНрдХрд░реНрд╖


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


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


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


рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

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


All Articles