рд░рд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ 10 рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рд▓рд╛рдн

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



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


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


1. рднрд╛рд╖рд╛ рдХреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХрддрд╛


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


рдЖрдЗрдП, рд░рд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред


рддрддреНрд╡реЛрдВ рдХреЗ рдЬреЛрдбрд╝реЗ рдкрд░ рджреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:


let zipper: Vec<_> = (1..).zip("foo".chars()).collect(); assert_eq!((1, 'f'), zipper[0]); assert_eq!((2, 'o'), zipper[1]); assert_eq!((3, 'o'), zipper[2]); 

рдкреНрд░рд╛рд░рдВрдн


рдиреЛрдЯ: рдкреНрд░рд╛рд░реВрдк name!(...) рд▓рд┐рдП рдПрдХ рдХреЙрд▓ name!(...) рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдореИрдХреНрд░реЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╣реИред рд░рд╕реНрдЯ рдореЗрдВ рдРрд╕реЗ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рдирд╛рдо рд╣рдореЗрд╢рд╛ рдПрдХ рдкреНрд░рддреАрдХ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ ! рддрд╛рдХрд┐ рд╡реЗ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдФрд░ рдЕрдиреНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рд╕рдХреЗрдВред рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд╛рднреЛрдВ рдкрд░ рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА regex рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:


 extern crate regex; use regex::Regex; let re = Regex::new(r"^\d{4}-\d{2}-\d{2}$").unwrap(); assert!(re.is_match("2018-12-06")); 

рдкреНрд░рд╛рд░рдВрдн


рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдкрд░реЗрдЯрд░ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ Point рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП Add рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:


 use std::ops::Add; struct Point { x: i32, y: i32, } impl Add for Point { type Output = Point; fn add(self, other: Point) -> Point { Point { x: self.x + other.x, y: self.y + other.y } } } let p1 = Point { x: 1, y: 0 }; let p2 = Point { x: 2, y: 3 }; let p3 = p1 + p2; 

рдкреНрд░рд╛рд░рдВрдн


рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:


 struct Point<T> { x: T, y: T, } let int_origin = Point { x: 0, y: 0 }; let float_origin = Point { x: 0.0, y: 0.0 }; 

рдкреНрд░рд╛рд░рдВрдн


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


2. рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдг


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


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


рдХрд╛рд░реНрдЧреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓ рдФрд░ рдиреНрдпреВрдирддрдо рдЯреЛрд▓рдорд╛рд░реНрдХ рдорд╛рд░реНрдХрдЕрдк рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ Cargo.toml рд╡рд┐рдиреНрдпрд╛рд╕ Cargo.toml рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг Cargo.toml рдЧрдпрд╛ Cargo.toml :


 [package] name = "some_app" version = "0.1.0" authors = ["Your Name <you@example.com>"] [dependencies] regex = "1.0" chrono = "0.4" [dev-dependencies] rand = "*" 

рдФрд░ рдиреАрдЪреЗ рдХрд╛рд░реНрдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрджреЗрд╢ рджрд┐рдП рдЧрдП рд╣реИрдВ:


 $ cargo check $ cargo test $ cargo run 

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


3. рдирд┐рд░реНрдорд┐рдд рдкрд░реАрдХреНрд╖рдг


рд░рд╕реНрдЯ рдореЗрдВ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдФрд░ рд╕рд░рд▓ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдмрд╛рд░-рдмрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред :) рдЕрдХреНрд╕рд░ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдБ рдЙрдирдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:


 pub fn is_false(a: bool) -> bool { !a } pub fn add_two(a: i32) -> i32 { a + 2 } #[cfg(test)] mod test { use super::*; #[test] fn is_false_works() { assert!(is_false(false)); assert!(!is_false(true)); } #[test] fn add_two_works() { assert_eq!(1, add_two(-1)); assert_eq!(2, add_two(0)); assert_eq!(4, add_two(2)); } } 

рдкреНрд░рд╛рд░рдВрдн


test рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрд╛рд░реНрдп, #[test] рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд╣реИрдВ, рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВред cargo test рдХрдорд╛рдВрдб рдХреЛ рдмреБрд▓рд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рд╡рд┐рд╢реЗрд╖рддрд╛ #[cfg(test)] , рдЬреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЗрд╡рд▓ рддрднреА рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред


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


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


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


4. рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдкреНрд░рд▓реЗрдЦрди


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


 /// Returns a byte slice of this `String`'s contents. /// /// The inverse of this method is [`from_utf8`]. /// /// [`from_utf8`]: #method.from_utf8 /// /// # Examples /// /// Basic usage: /// /// ``` /// let s = String::from("hello"); /// /// assert_eq!(&[104, 101, 108, 108, 111], s.as_bytes()); /// ``` #[inline] #[stable(feature = "rust1", since = "1.0.0")] pub fn as_bytes(&self) -> &[u8] { &self.vec } 

рдкреНрд░рд▓реЗрдЦрди


рдкреНрд░рдХрд╛рд░ String рдХреЗ as_bytes рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ


 let s = String::from("hello"); assert_eq!(&[104, 101, 108, 108, 111], s.as_bytes()); 

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╢реБрднрд╛рд░рдВрдн рдХреЗ рджреМрд░рд╛рди рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


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


5. рд╕реНрдорд╛рд░реНрдЯ рдСрдЯреЛ-рдкреНрд░рдХрд╛рд░ рдХреА рдХрдЯреМрддреА


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


 let mut vec = Vec::new(); let text = "Message"; vec.push(text); 

рдкреНрд░рд╛рд░рдВрдн


рдпрджрд┐ рд╣рдо рдкреНрд░рдХрд╛рд░ рдПрдиреЛрдЯреЗрд╢рди рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:


 let mut vec: Vec<&str> = Vec::new(); let text: &str = "Message"; vec.push(text); 

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


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


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


6. рдЪрд░ рдШреЛрд╖рдгрд╛ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдкреИрдЯрд░реНрди рдХрд╛ рдорд┐рд▓рд╛рди


рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВ


 let p = Point::new(); 

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


 let Point { x, y } = Point::new(); 

рдкреНрд░рд╛рд░рдВрдн


рдпрд╣рд╛рдВ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЗрд╕ рддрд░рд╣ рдХреА рддреБрд▓рдирд╛ рдЪрд░ x рдФрд░ y рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧреА, рдЬрд┐рд╕реЗ Point рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ x рдФрд░ y рдлрд╝реАрд▓реНрдб рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ Point::new() ред рдЗрд╕реА рд╕рдордп, рддреБрд▓рдирд╛ рд╕рд╣реА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рджрд╛рдПрдВ рдкрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдмрд╛рдИрдВ рддрд░рдл рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ Point рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣, рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рджреЛ рддрддреНрд╡реЛрдВ рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ:


 let [a, b, _] = [1, 2, 3]; 

рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рдХрд░рдирд╛ рд╣реИред рд╕рдмрд╕реЗ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рддреБрд▓рдирд╛рдПрдВ рдЙрди рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЬрд╣рд╛рдВ рдирдП рдЪрд░ рдирд╛рдо рд░реБрд╕реНрдд рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН: match , let , if let , while let if let , рд▓реВрдк рдХреЗ рд╣реЗрдбрд░ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдХреНрд▓реЛрдЬрд░ рдХреЗ рддрд░реНрдХреЛрдВ рдореЗрдВред рдпрд╣рд╛рдБ рд▓реВрдк рдХреЗ for рд▓реВрдк рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


 for (i, ch) in "foo".chars().enumerate() { println!("Index: {}, char: {}", i, ch); } 

рдкреНрд░рд╛рд░рдВрдн


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


рд▓реВрдк рдХреЗ for рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдЙрджрд╛рд╣рд░рдг:


 for _ in 0..5 { //   5  } 

рдпрд╣рд╛рдБ рд╣рдо _ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХреЗ рдорд╛рди рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд▓реВрдк рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддрд┐ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдХреЗ рд╕рд╛рде:


 fn foo(a: i32, _: bool) { //      } 

рдпрд╛ match рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ match рдХрд░рддреЗ рд╕рдордп:


 match p { Point { x: 1, .. } => println!("Point with x == 1 detected"), Point { y: 2, .. } => println!("Point with x != 1 and y == 2 detected"), _ => (), //        } 

рдкреНрд░рд╛рд░рдВрдн


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


7. рд╕рд┐рдВрдЯреИрдХреНрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдФрд░ рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓


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


 println!("Hello, {name}! Do you know about {}?", 42, name = "User"); 

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


 let name = "Bob"; let result = js! { var msg = "Hello from JS, " + @{name} + "!"; console.log(msg); alert(msg); return 2 + 2; }; println!("2 + 2 = {:?}", result); 

рдореИрдХреНрд░реЛрдВ js! stdweb рдкреИрдХреЗрдЬ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдкреВрд░реНрдг-рд╡рд┐рдХрд╕рд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдПрдХрд▓-рдЙрджреНрдзреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдФрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдПрдХ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ @{expr} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд╕реНрдЯ рдХреЛрдб рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


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


8. рдирд┐рд░реНрднрд░ рдХреЛрдб рдХреА рдСрдЯреЛ-рдкреАрдврд╝реА


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


 #[derive(Copy, Clone, Debug, Default, PartialEq, Eq)] struct Point { x: i32, y: i32, } 

рдЪреВрдВрдХрд┐ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдЗрди рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ ( Copy , Clone , Debug , Default , PartialEq рдФрд░ Eq ) рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреВрд░реЗ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдкреВрд░реНрдг рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг:


 extern crate serde_derive; extern crate serde_json; use serde_derive::{Serialize, Deserialize}; #[derive(Serialize, Deserialize)] struct Point { x: i32, y: i32, } let point = Point { x: 1, y: 2 }; //  Point  JSON . let serialized = serde_json::to_string(&point).unwrap(); assert_eq!("{\"x\":1,\"y\":2}", serialized); //  JSON   Point. let deserialized: Point = serde_json::from_str(&serialized).unwrap(); 

рдкреНрд░рд╛рд░рдВрдн


рдпрд╣рд╛рдБ, Point рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП serde рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ Deserialize рдФрд░ Deserialize рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕рдХреЗ рдХреНрд░рдорд╛рдВрдХрди рдФрд░ deserialization рдХреЗ рддрд░реАрдХреЗ рд╕реНрд╡рддрдГ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдлрд┐рд░ рдЖрдк рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рднрд┐рдиреНрди рдХреНрд░рдорд╛рдВрдХрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ JSON рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ред


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


9. рдмреАрдЬрдЧрдгрд┐рддреАрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░


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


 enum Message { Quit, ChangeColor(i32, i32, i32), Move { x: i32, y: i32 }, Write(String), } 

Message рдХреЗ рдПрдХ рдЪрд░ рдХреЗ рд╡рд┐рд╢реЗрд╖ рдореВрд▓реНрдп рдХрд╛ рдкреНрд░рдХрд╛рд░ Message рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдпрд╛ рддреЛ рдПрдХ рдпреВрдирд┐рдЯ-рдЬреИрд╕рд╛ рдлрд╝реАрд▓реНрдбрд▓реЗрд╕ Quit рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╣реИ, рдЬреЛ рдЪреЗрдВрдЬрдХреЛрд▓рд░ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдпрд╛ рдЯреИрдВрдкрд▓ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ ChangeColor рдлреАрд▓реНрдб рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп Move рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд╕рд╛рде Write ред рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдПрдиреНрдпреВрдорд░реЗрдЯреЗрдб рдкреНрд░рдХрд╛рд░ рдХреЛ рдмреАрдЬреАрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 enum Color { Red, Green, Blue, White, Black, Unknown, } 

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


 let color: Color = get_color(); let text = match color { Color::Red => "Red", Color::Green => "Green", Color::Blue => "Blue", _ => "Other color", }; println!("{}", text); ... fn process_message(msg: Message) { match msg { Message::Quit => quit(), Message::ChangeColor(r, g, b) => change_color(r, g, b), Message::Move { x, y } => move_cursor(x, y), Message::Write(s) => println!("{}", s), }; } 

рдкреНрд░рд╛рд░рдВрдн


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


 pub enum Option<T> { None, Some(T), } 

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


 fn divide(numerator: f64, denominator: f64) -> Option<f64> { if denominator == 0.0 { None } else { Some(numerator / denominator) } } let result = divide(2.0, 3.0); match result { Some(x) => println!("Result: {}", x), None => println!("Cannot divide by 0"), } 

рдкреНрд░рд╛рд░рдВрдн


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


10. рдЖрд╕рд╛рди рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ


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




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

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


All Articles