Rust: рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╕реНрдерд╛рдиреАрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП var рдХреАрд╡рд░реНрдб

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

рдЕрдВрдХ #1273 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╕реНрдерд╛рдиреАрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП let mut рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП mut рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИред let mut рдПрдХ рдХреАрд╡рд░реНрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд░реНрдмреЛрдЬрд╝ рд╣реИ рдФрд░ рдХреЙрд▓рдо рд╕рдВрд░реЗрдЦрдг рдХреЛ рднреА рддреЛрдбрд╝рддрд╛ рд╣реИред рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдХреНрд╖реЗрддреНрд░ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд▓рд┐рдП var рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдареАрдХ рд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХреЛрдИ рдирд╣реАрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ var рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╕реНрдерд╛рдиреАрдп рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдФрд░ mut рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдХреНрд╖реЗрддреНрд░ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд▓рд┐рдП:

let x = 7; // declaration of immutable variable x
var y = 7; // declaration of mutable variable y
type point = { mut x: int, mut y: int }; // declaration of mutable record type

рдбреЗрд╡

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

рдореБрдЭреЗ рдХрдмреВрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рд╣реА рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдореНрдпреВрдЯреЗрдмрд▓ рд╡рд░реНрд░реНрд╕ рдФрд░ рдореНрдпреВрдЯреЗрдмрд▓ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди var рдереЛрдбрд╝реЗ 'рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдирд╛рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ let mut )

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдПрдХ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдмреЛрдЭрд┐рд▓ рд╣реИред рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ "рд╕реБрд╕рдВрдЧрдд" рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ "var" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ "var" рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реЛрдЧрд╛ (рдпрджрд┐ рдЖрдк рдмрд╛рдж рдореЗрдВ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред рдлрд┐рд░ рдЖрдк рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдХрдо рдкрдардиреАрдп рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред

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

рдПрдХ рддрд░рдл рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рд░реВрдк рд╕реЗ рджреГрд╢реНрдп рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛:

let mut x = 4,
    y = 8;  // is y mutable or not?

рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд┐рд▓реНрд╡рд╛рди рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _ugly_ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╡реЗ рдХреЗрд╡рд▓ рдПрдХ рдХреАрд╕реНрдЯреНрд░реЛрдХ рджреНрд╡рд╛рд░рд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрднреА-рдХрднреА рдереЛрдбрд╝рд╛ рдХрдо рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддреЗ рд╣реИрдВред рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреАрд╡рд░реНрдб рдХреЛ рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ (IMO) var рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЪрд░ рдШреЛрд╖рдгрд╛ рдХреАрд╡рд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдРрд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпрддрд╛-рдмрд╛рдп-рдбрд┐рдлреЙрд▓реНрдЯ рдкрд░ рдЧрд░реНрд╡ рдХрд░рддреА рд╣реИред рдФрд░ рдЧрд░реАрдм C# рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ, рдЬрд┐рдирдХреЗ рд▓рд┐рдП var рд╣рдорд╛рд░рд╛ let !

рдореБрдЭреЗ рдЕрднреА рднреА рдПрдХ рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде let mut рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИ, рддрд╛рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХреЛрдИ рдирдпрд╛ рдХреАрд╡рд░реНрдб рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ рдЬрдм mut рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ #1273 рдореЗрдВ рдореВрд▓ рдкреНрд░рд╕реНрддрд╛рд╡?

@pcwalton рдиреЗ рдХреЗрд╡рд▓ mut рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд┐рдпрд╛: рд░рд┐рдХреЙрд░реНрдб рдЕрдХреНрд╖рд░ рдФрд░ рдмреНрд▓реЙрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордирдорд╛рдиреА рд▓реБрдХрд╣реЗрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

{ mut x: int ...

рд░рд┐рдХреЙрд░реНрдб рд╢рд╛рдмреНрджрд┐рдХ, рдпрд╛ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ?

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

рдореИрдВрдиреЗ рдХрд▓ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рд╕реБрдирд╛ рдХрд┐ рдЕрдм let рдФрд░ var рд▓рдВрдмрд╛рдИ рд╕рдорд╛рди рд╣реЛрдЧреА, рдЬреЛ рд╕рдВрд░реЗрдЦрдг рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

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

рдЬрдмрдХрд┐ рдореИрдВ рдЕрднреА рднреА let рдФрд░ var рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд╣реВрдВ (рдмрд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддрд░рд╣, рд▓реЗрдХрд┐рди 100% рдЕрд▓рдЧ), рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрд╣реБрдд рдХрдо рд╣реЛрдЧрд╛ рдпрджрд┐ рдЪрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдЯ рдкрд╛рд╕ рдерд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрднреА рднреА рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдмрдирд╛рддрд╛ рд╣реИ?

рдХреИрд╕рд╛ рд░рд╣реЗрдЧрд╛:

val x = ... // immutable (val-ue)
var y = ... // mutable (var-iable)

рдЬреИрд╕реЗ рд╕реНрдХреИрд▓рд╛ рдореЗрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @brson рд╕рд╣реА рд╣реИ рдФрд░ рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо mut рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдпрд╛рдиреА рдЖрдкрдХреЛ let x = mut 10;

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрднреА рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд░рдирд╛; рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ!

рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБред рдореБрдЭреЗ рдореНрдпреВрдЯ рдХреЛ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ "рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реМрджрд╛" рд╣реИ --- рд╡рд╣рд╛рдВ рдЕрдЬреАрдм рдЕрдЬреАрдмрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдХрднреА рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдХреЛрдИ let x = mut 5 рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рдорд╛рди рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ рдЖрдк рдЖрдЬ рдХреА рддрд░рд╣ рд╣реА let mut x = 5 рд▓рд┐рдЦреЗрдВрдЧреЗ; рдПрдХ рдЪрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛-рдиреЗрд╕" рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрд╕рд╕реЗ рдЖрдПрдЧрд╛, рди рдХрд┐ рдЙрд╕реЗ рд╕реМрдВрдкрд╛ рдЬрд╛ рд░рд╣рд╛ рдореВрд▓реНрдпред

рдЕрдиреНрдпрдерд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ x рдкреНрд░рдХрд╛рд░ рдХрд╛ [mut int] рдФрд░ рдЖрдк let y = x[0] рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддреЛ y рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ? рдпрд╛ рдХреБрдЫ рдФрд░? рдпрд╣ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд▓рдЧрддрд╛ рд╣реИред

@Dretch рдореБрдЭреЗ рд╡реИрд▓/var рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐

рдореИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ var рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реАрдЦ рд░рд╣реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ @eholk рдХреА рдЪрд┐рдВрддрд╛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ mut рдЯрд╛рдЗрдк рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдпрдХреАрдирди рдЕрдЪреНрдЫрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдХрд┐ рдЖрдк var/let рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╕рд╛рде рдХрдо рдЗрдЪреНрдЫреБрдХ рд╣реЛрдВрдЧреЗ - var рдФрд░ let рдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХрдард┐рди рд╣реИ рд▓реЗрдХрд┐рди рдЖрдк let mut рднреА рдЯрд╛рдЗрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ let рдЯрд╛рдЗрдк рдХрд┐рдПред

рд▓реЗрдХрд┐рди рдореЗрд░реА рдХреЛрдИ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм рдореИрдВ рддреАрди-рд╡рд░реНрдг рд╡рд╛рд▓реЗ рдХреАрд╡рд░реНрдб рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдмрдпрд╛рдиреЛрдВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВред

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

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

рдбреЗрд╡

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

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

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

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

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

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

рдбреЗрд╡

рд╡реИрд╕реЗ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо "рд▓реЗрдЯ рдлреВ = рдореНрдпреВрдЯ рдмрд╛рд░" рдпрд╛ "рд▓реЗрдЯ рдлреВ: = рдмрд╛рд░" рдХреЗ рд░реВрдк рдореЗрдВ "рд▓реЗрдЯ рдореНрдпреВрдЯ рдлреВ = рдмрд╛рд░" рдХреЗ рд╡рд┐рдкрд░реАрдд рдкрд╣рд▓рд╛ рдЯреЛрдХрди рд▓рд╛рдЗрди рдЕрдк рд╣реЛрдЧрд╛ред рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдо рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд▓рдВрдмрд╛рдИ рдХрд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╢реЗрд╖ рдХрдерди рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╢реЛрдзрдХ рд╕реЗ рдмрдЪрдирд╛ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред

рдУрд╣ рд╣реЗ, рдореИрдВ := рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реЗ рдЖрдВрд╢рд┐рдХ рд╣реВрдВред

рдбреЗрд╡

рджреВрд╕рд░реЗ рд╡рд┐рдЪрд╛рд░ рдкрд░, рдкрд╛рд╕реНрдХрд▓ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЕрд╕реНрд╡рд╕реНрде рд╣реИред рдореИрдВ рдЗрд╕реЗ рд╡рд╛рдкрд┐рд╕ рд▓реЗрддрд╛ рд╣реВрдБред :)

рдбреЗрд╡

рд╕рд╛рде рд╣реА, let foo := bar рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ:

let mut foo;
foo = bar;

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

@eholk рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЗрд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдореБрдЦреНрдпрдзрд╛рд░рд╛ рдХреА рднрд╛рд╖рд╛ рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЬреАрдм рд▓рдЧреЗрдЧрд╛ред

рдбреЗрд╡

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

let foo = "hello";
let foo := "hell";

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

= рдмрдирд╛рдо := рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИред рдЕрдзрд┐рдХрддрд░ val , var рдФрд░ рдЙрд╕рдХреЗ рднрд┐рдиреНрдирд░реВрдкреЛрдВ рдХреЗ рд╡рд┐рд░реЛрдз рдореЗрдВ; рдпрд╣ рдХреЗрд╡рд▓ _рд╕реНрдкрд╖реНрдЯ_ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдЕрдЧрд░ рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдЕрдкрдирд╛рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдШреГрдгрд╛ рдореЗрдВ рдирд╣реАрдВ рдЫреЛрдбрд╝реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рд╕реНрдореГрддрд┐ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛" рдПрдХ рдмреБрд░рд╛ рд╕рдВрдХреЗрдд рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдареАрдХ рд╣реВрдВ:

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

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

(рд╕рднреА рд▓реЗрдЯреНрд╕ рд╢реБрд░реВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдереЗ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреИрдкреНрдЪрд░ рдирд╣реАрдВ рдерд╛, рдХреЗрд╡рд▓ рдмрд╛рдЗрдВрдбред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдмрд╛рдЗрдВрдб рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдПрдирд╡реА рдХреИрдкреНрдЪрд░ рд╣реИред рдЯреЛрдорд╛рдпрдЯреЛ, рдЯреЛрдорд╣рддреЛред)

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдореНрдпреВрдЯреЗрдмрд▓ рдХреЛ рдЕрдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрдмреНрдЬрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@graydon рд╕рд╣реА рд╣реИ рдХрд┐ рджреЛ рдореВрд▓ рдкреНрд░реЗрд░рдгрд╛рдПрдБ рдереАрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рджреЛ рдкреНрд░реЗрд░рдгрд╛рдПрдБ рдереАрдВ:

  • рдПрдХ fn@ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЪрд░реЛрдВ рдХрд╛ рдирд┐рд╣рд┐рдд "рдмрд╛рдп-рдХреЙрдкреА" рдХреИрдкреНрдЪрд░
  • рдпрд╣ рд╕рдордЭрдирд╛ рдХрд┐ рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдЙрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ

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

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

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

@Dretch рдореБрдЭреЗ "рд╡реИрд▓" рдФрд░ "var" рдХреБрдВрдЬреА рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде

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

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЦреЗрддреЛрдВ рдХреЛ рдЬрдВрдЧ рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ mut рдЙрдкрдпреЛрдЧ let mut рдмрдЬрд╛рдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░рд┐рдХреЙрд░реНрдб/рд╡реЗрд░рд┐рдПрдмрд▓-рдЗрди-рдмреНрд▓реЙрдХ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧреА?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░рд┐рдХреЙрд░реНрдб рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рджреВрд░ рдХрд░рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдХреНрд╖реЗрддреНрд░ рдмрдиреЗ рд░рд╣реЗрдВред

@Dretch рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдХреНрд╖реЗрддреНрд░ рдЕрдкрдиреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реИрдВ, рдФрд░ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░рд┐рдХреЙрд░реНрдб рдкрд╣рд▓реЗ рд╣реА рдЪрд▓реЗ рдЧрдП рд╣реИрдВред

рдореИрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдкреНрд░рддрд┐ рдЙрджрд╛рд╕реАрди рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ _might_ mut рд▓рд┐рдП рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдШреЛрд╖рдгрд╛ рдХреАрд╡рд░реНрдб рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдбреНрд░реЗрдЪ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ), рдардВрдб/рд╡рд┐рдЧрд▓рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ . рдЖрдЬ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ:

let foo = 1;  // immutable
/* 10,000 lines of code here */
let mut foo = foo;  // we're making foo mutable, totally understandable
/* 10,000 lines of code here */
let foo = foo;  // potential wtf

рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде:

let foo = 1;  // immutable
/* 10,000 lines of code here */
mut foo = foo;  // a mutable foo, no problems here
/* 10,000 lines of code here */
let foo = foo;  // slightly less of a potential for wtf, since we officially have two declaration forms

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рднреА рдЗрд╕ рддрд░рд╣ рдорд╣рд╕реВрд╕ рдЬрдВрдЧ-рд╡рд╛рдж рд╣реЛрдЧрд╛ рдЕрд╕рдорд╛рди рдерд╛ "mut рдХреЗ рдЕрднрд╛рд╡ рдЕрдЪрд▓ рд╕реНрдерд┐рддрд┐ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп", рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЕрднреА рднреА рд▓реЗрдЦрди рд╣реЛрдЧреА let foo = 1; рдмрд▓реНрдХрд┐ рд╕рд┐рд░реНрдл рддреБрд▓рдирд╛ рдореЗрдВ foo = 1; (рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рд░реВрдк рдЬрд╛рд╣рд┐рд░ рд╣реИ рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП рдЕрд╡рд╛рдВрдЫрдиреАрдп)ред

рдХреЛрдЯрд▓рд┐рди val рдФрд░ var рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдореАрд▓ рдХреЗ рдкрддреНрдерд░ 1 рдХреЗ рд▓рд┐рдП рдирд╛рдорд╛рдВрдХрд┐рдд рдХрд░реВрдВрдЧрд╛, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд, рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рд╕реБрд▓рдЭрд╛ рд╕рдХреЗрдВред

рдЖрдо рд╕рд╣рдорддрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореНрдпреВрдЯ рдХреЛ рдкреИрдЯрд░реНрди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИред рд╕рдорд╛рдкрдиред

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

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

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

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

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

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

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