{"id":316420,"date":"2021-01-15T15:00:39","date_gmt":"2021-01-15T15:00:39","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=316420"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=316420","title":{"rendered":"Rust crashcourse. \u041f\u0440\u0430\u0432\u0438\u043b\u043e \u0442\u0440\u0451\u0445 \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<blockquote><p>\u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0447\u0430\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 Rust Crash Course \u043e\u0442 \u041c\u0430\u0439\u043a\u043b\u0430 \u0421\u043d\u043e\u0439\u043c\u0430\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435, \u0438 \u0441\u043e\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0441 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438 \u0436\u0438\u0437\u043d\u0438.<\/p>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0431\u043b\u0438\u0437\u043a\u043e \u043a \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u043c\u0443 \u0441\u0442\u0438\u043b\u044e, \u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0436\u0434\u043e\u043c\u0435\u0434\u0438\u0439 \u0438 \u0432\u043e\u0441\u043a\u043b\u0438\u0446\u0430\u043d\u0438\u0439, \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u0441\u043c\u044b\u0441\u043b\u0430.<a name=\"habracut\"><\/a><\/p><\/blockquote>\n<p>  <\/p>\n<h2 id=\"tipy-parametrov\">\u0422\u0438\u043f\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/h2>\n<p>  <\/p>\n<p>\u0421\u043f\u0435\u0440\u0432\u0430 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435\u043c. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442\u044c \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0435\u0445 &quot;\u043c\u043e\u0439 \u043c\u043e\u0437\u0433 \u0431\u044b\u043b \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d \u0425\u0430\u0441\u043a\u0435\u043b\u043b\u043e\u043c&quot; \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0439, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u0449\u0438\u043a\u0438 \u043d\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0442\u0430\u043a \u0447\u0442\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0438\u043d\u044f\u044e\u0441\u044c \u0437\u0430 \u0441\u0432\u043e\u0438 \u0448\u0443\u0442\u043a\u0438 \u043d\u0430\u0434 \u0441\u043e\u0431\u043e\u0439 \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0445\u0430\u0441\u043a\u0435\u043b\u043b\u0438\u0441\u0442\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u043b\u0438 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u0442\u0438\u043f\u043e\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 (type signature) \u0443 \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439?<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn foo(mut person: Person) { unimplemented!() } fn bar(person: Person ) { unimplemented!() }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0425\u0430\u0441\u043a\u0435\u043b\u043b\u0438\u0441\u0442 \u0432\u043e \u043c\u043d\u0435 \u043a\u0440\u0438\u0447\u0438\u0442: &quot;\u041e\u043d\u0438 \u0436\u0435 \u0440\u0430\u0437\u043d\u044b\u0435!&quot;. \u041e\u0434\u043d\u0430\u043a\u043e \u0436\u0435, <em>\u043e\u043d\u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435<\/em>(<em>exactly the same<\/em>). <em>\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/em> (<em>inner mutability<\/em>) \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>person<\/code> \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>\u0438\u0440\u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u0430<\/em> \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u043a\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0412\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>person<\/code> \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0430\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c \u0438\u043b\u0438 \u043d\u0435\u0442. \u041c\u044b \u0443\u0436\u0435 \u0432\u0438\u0434\u0435\u043b\u0438 \u0445\u0438\u043d\u0442 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e: \u0444\u0430\u043a\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u043c\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 <code>foo<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let alice = Person { name: String::from(&quot;Alice&quot;), age: 30 };     foo(alice); \/\/ \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442! }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421 \u0443\u0447\u0451\u0442\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0432\u0435 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn baz(person: &amp;Person) { unimplemented!() } fn bin(person: &amp;mut Person) { unimplemented!() }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u043e-\u043d\u0430\u043f\u0435\u0440\u0432\u043e, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043a\u0430\u043a <code>baz<\/code>, \u0442\u0430\u043a \u0438 <code>bin<\/code> \u0438\u043c\u0435\u044e\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u043e\u0442 <code>foo<\/code> \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b. \u041e\u043d\u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 <code>Person<\/code>, \u0430 \u043d\u0435 \u0441\u0430\u043c <code>Person<\/code>. \u041d\u043e \u0447\u0442\u043e \u043d\u0430\u0441\u0447\u0451\u0442 <code>baz<\/code> \u0438 <code>bin<\/code>? \u0423 \u043d\u0438\u0445 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u0442\u0438\u043f\u043e\u0432 \u0438\u043b\u0438 \u0440\u0430\u0437\u043d\u044b\u0435? \u0423 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0431\u043b\u0430\u0437\u043d \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0439 \u0436\u0435 \u043b\u043e\u0433\u0438\u043a\u0435, \u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 <code>foo<\/code> \u043f\u0440\u043e\u0442\u0438\u0432 <code>bar<\/code>, \u0438 \u0440\u0435\u0448\u0438\u0442\u044c, \u0447\u0442\u043e <code>mut<\/code> \u2014 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0434\u0435\u0442\u0430\u043b\u044c \u0444\u0443\u043a\u043d\u0446\u0438\u0438. \u041d\u043e \u044d\u0442\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e!<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0433\u043b\u044f\u0434\u0438\u0442\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let alice = Person { name: String::from(&quot;Alice&quot;), age: 30 };     baz(&amp;alice); \/\/ \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442     bin(&amp;alice); \/\/ \u043e\u0448\u0438\u0431\u043a\u0430!     bin(&amp;mut alice); \/\/ \u0430 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a <code>bin<\/code> \u0434\u0430\u0436\u0435 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u043e <code>bin<\/code> \u0442\u0440\u0435\u0431\u0443\u0435\u0442 <em>\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e<\/em> \u0441\u0441\u044b\u043b\u043a\u0443, \u0430 \u043c\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 <em>\u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e<\/em>. \u0422\u0430\u043a \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u042d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e <em>\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0435<\/em> \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435, \u043d\u043e \u0438 <em>\u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435<\/em>: \u043c\u044b \u0431\u0435\u0440\u0451\u043c \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0438\u043c\u0435\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u0432 \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f (\u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437 \u0443\u0440\u043e\u043a\u0430 2).<\/p>\n<p>  <\/p>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0442\u0438\u043f\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e (\u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f) \u043a\u0430\u043a \u0432 <code>foo<\/code><\/li>\n<li>\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u043a\u0430\u043a \u0432 <code>baz<\/code><\/li>\n<li>\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u043b\u044b\u043a\u0435, \u043a\u0430\u043a \u0432 <code>bin<\/code><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u044d\u0442\u043e\u043c\u0443, \u043e\u0440\u0442\u043e\u0433\u043e\u043d\u0430\u043b\u044c\u043d\u043e, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0430\u043c\u0438 \u043f\u043e \u0441\u0435\u0431\u0435 \u043b\u0438\u0431\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c\u0438, \u043b\u0438\u0431\u043e \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c\u0438. (\u041f\u0440\u0438\u043c. \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043d\u0435\u044f\u0432\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0430\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438; \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 <code>foo<\/code>, <code>baz<\/code> \u0438 <code>bin<\/code> \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 <code>person<\/code>).<\/p>\n<p>  <\/p>\n<h2 id=\"mutabelnaya-vs-nemutabelnaya-peredacha-po-znacheniyu\">\u041c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0430\u044f vs. \u041d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e<\/h2>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c. \u041a\u0430\u043a\u0443\u044e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e? \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435! \u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>birthday<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0447\u0435\u0439-\u0442\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442 \u043d\u0430 1.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">#[derive(Debug)] struct Person {     name: String,     age: u32, }  fn birthday_immutable(person: Person) -&gt; Person {     Person {         name: person.name,         age: person.age + 1,     } }  fn birthday_mutable(mut person: Person) -&gt; Person {     person.age += 1;     person }  fn main() {     let alice1 = Person { name: String::from(&quot;Alice&quot;), age: 30 };     println!(&quot;Alice 1: {:?}&quot;, alice1);     let alice2 = birthday_immutable(alice1);     println!(&quot;Alice 2: {:?}&quot;, alice2);     let alice3 = birthday_mutable(alice2);     println!(&quot;Alice 3: {:?}&quot;, alice3); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 <code>_immutable<\/code> \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u0434\u0438\u043e\u043c\u0435, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 <code>Person<\/code>, \u0434\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u0443\u044f \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b <code>Person<\/code>. \u042d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 Rust, \u043d\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0434\u0438\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u044b\u043c, \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u0442\u0430\u043a \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e.<\/li>\n<li>\u041c\u044b \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044f \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0443\u044e \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0443.<\/li>\n<li>\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>alice1<\/code> \u0438 <code>alice2<\/code> \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>main<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u044b (move) \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u0445.<\/li>\n<li><code>alice2<\/code> \u2014 \u0438\u043c\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043d\u043e \u0432\u0441\u0451 \u0435\u0449\u0451 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0435\u0451 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"mutabelnaya-vs-nemutabelnaya-peredacha-po-mutabelnoy-ssylke\">\u041c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0430\u044f vs. \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/h2>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u0443\u0436\u0435 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0440\u0443\u0434\u043d\u0435\u0435 \u0440\u0430\u0437\u0433\u043b\u044f\u0434\u0435\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0444\u0430\u043a\u0442\u043e\u043c Rust: <em>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0441\u0441\u044b\u043b\u043e\u043a \u2014 \u044d\u0442\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 (it&#8217;s unusual)<\/em>. \u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0438\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u0439 \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0439 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u044f\u0432\u043d\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u0440\u0435\u043c\u0451\u043d \u0436\u0438\u0437\u043d\u0438, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0440\u0435\u043b\u043e \u0441\u043c\u044b\u0441\u043b. \u041d\u043e \u043e\u043d \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043c, \u0433\u0434\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <code>mut<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435, \u0447\u0435\u043c \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u0438\u043c\u0435\u0440: \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0433\u043e \u0430\u043f\u043e\u0441\u0442\u0440\u043e\u0444\u0430 (<code>'<\/code>) \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f <em>\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0436\u0438\u0437\u043d\u0438<\/em> (<em>lifetime parameters<\/em>), \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u0434\u043e\u043b\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0436\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0430. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e &quot;\u043e\u0431\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438&quot;. \u041f\u043e\u043a\u0430 \u0435\u0449\u0451 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0442\u0435\u043c\u0443. \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a Rust Book.<\/p>\n<p>  <\/p>\n<p>\u041e\u043a, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443, \u0438 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">#[derive(Debug)] struct Person {     name: String,     age: u32, }  fn birthday_immutable(person: &amp;mut Person) {     person.age += 1; }  fn birthday_mutable&lt;'a&gt;(mut person: &amp;'a mut Person, replacement: &amp;'a mut Person) {     person = replacement;     person.age += 1; }  fn main() {     let mut alice = Person { name: String::from(&quot;Alice&quot;), age: 30 };     let mut bob = Person { name: String::from(&quot;Bob&quot;), age: 20 };     println!(&quot;Alice 1: {:?}, Bob 1: {:?}&quot;, alice, bob);     birthday_immutable(&amp;mut alice);     println!(&quot;Alice 2: {:?}, Bob 2: {:?}&quot;, alice, bob);     birthday_mutable(&amp;mut alice, &amp;mut bob);     println!(&quot;Alice 3: {:?}, Bob 3: {:?}&quot;, alice, bob); }  \/\/ does not compile fn birthday_immutable_broken&lt;'a&gt;(person: &amp;'a mut Person, replacement: &amp;'a mut Person) {     person = replacement;     person.age += 1; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>birtday_immutable<\/code> \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430, \u0438 \u043c\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0435\u0451 \u0432 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u041c\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u0430 \u0441\u0441\u044b\u043b\u043a\u0430. \u0412\u044b\u0432\u043e\u0434: \u043c\u044b \u043c\u0435\u043d\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0430 <em>\u043d\u0435<\/em> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e\u0439 (\u043f\u0440\u0438\u043c: \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>person<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438\u0448\u044c \u0430\u0434\u0440\u0435\u0441 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438. \u042d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0430 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435\u0441\u044f \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443).<\/p>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>birthday_mutable<\/code> \u2014 \u043d\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u0430\u044f, \u043d\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u0430\u0448\u0443 \u0442\u043e\u0447\u043a\u0443 \u0437\u0440\u0435\u043d\u0438\u044f. \u041c\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c <em>\u0434\u0432\u0435<\/em> \u0441\u0441\u044b\u043b\u043a\u0438: <code>person<\/code> \u0438 <code>replacement<\/code>. \u041e\u0431\u0435 \u044f\u0432\u043b\u044e\u044f\u0442\u0441\u044f \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438, \u043d\u043e <code>person<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u2014 \u044d\u0442\u043e \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 (<code>person = replacement<\/code>). \u042d\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442 \u0442\u043e, \u043a\u0443\u0434\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>person<\/code>, \u0438 <em>\u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442<\/em> \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430 \u0441\u0441\u044b\u043b\u043a\u0430. \u041f\u043e \u0444\u0430\u043a\u0442\u0443, \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0435 \u0432 <code>person<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">warning: value passed to `person` is never read<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>main<\/code> \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u0442\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 <code>bob<\/code> \u0438 <code>alice<\/code> \u043a\u0430\u043a \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0435. \u042d\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443? \u0447\u0442\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0445. \u0415\u0441\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>main<\/code> \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0441\u044b\u043b\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0437\u0430\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044f <code>birthday_immutable_broken<\/code>. \u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0438\u0437 \u0438\u043c\u0435\u043d\u0438, \u043e\u043d\u0430 \u0434\u0430\u0436\u0435 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043c\u0435\u043d\u044f\u0442\u044c \u0430\u0434\u0440\u0435\u0441, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <code>person<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439.<\/p>\n<p>  <\/p>\n<p><strong>\u0423\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435<\/strong>: \u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043f\u0440\u0435\u0436\u0434\u0435, \u0447\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0451.<\/p>\n<p>  <\/p>\n<h2 id=\"mutabelnaya-vs-nemutabelnaya-peredacha-po-nemutabelnoy-ssylke\">\u041c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0430\u044f vs. \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/h2>\n<p>  <\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044f \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043c \u0436\u0435 \u0441\u0430\u043c\u044b\u043c, \u0447\u0442\u043e \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043c\u0435\u0442\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043a\u0430\u043a \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e, \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043d\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442. \u041f\u043e\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443\u0439\u0442\u0435\u0441\u044c \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c, \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u043c\u0443 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c\u0443 \u0432\u044b\u0448\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438.<\/p>\n<p>  <\/p>\n<h2 id=\"iz-mutabelnogo-v-nemutabelnoe\">\u0418\u0437 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0435<\/h2>\n<p>  <\/p>\n<p>\u0418 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn needs_mutable(x: &amp;mut u32) {     *x *= 2; }  fn needs_immutable(x: &amp;u32) {     println!(&quot;{}&quot;, x); }  fn main() {     let mut x: u32 = 5;     let y: &amp;mut u32 = &amp;mut x;     needs_immutable(y);     needs_mutable(y);     needs_immutable(y); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u0437 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044f \u0443\u0436\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043b, \u0432\u044b \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. <code>y<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0438\u043f\u043e\u043c <code>&amp;mut u32<\/code>, \u043d\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0435\u0433\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>needs_immutable<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 <code>&amp;u32<\/code>. \u041d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u043e\u0432, \u0440\u0430\u0441\u0445\u043e\u0434\u0438\u043c\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u043d\u0435 \u0442\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e: \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438, \u0441\u0442\u0440\u043e\u0436\u0435, \u0432\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0430\u044f (\u0434\u0435\u0440\u0436\u0438\u0442\u0435 \u044d\u0442\u043e \u0432 \u0433\u043e\u043b\u043e\u0432\u0435, \u043e\u043d\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439).<\/p>\n<p>  <\/p>\n<h2 id=\"itogi-pravila-tryoh-dlya-parametrov\">\u0418\u0442\u043e\u0433\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0442\u0440\u0451\u0445 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/h2>\n<p>  <\/p>\n<p>\u0422\u0440\u0438 \u0442\u0438\u043f\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e<\/li>\n<li>\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/li>\n<li>\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u044f \u043d\u0430\u0437\u044b\u0432\u0430\u044e \u043f\u0440\u0430\u0432\u0438\u043b\u043e\u043c \u0442\u0440\u0451\u0445. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u0438\u043f\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e, \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u043c \u043a\u043e\u0434\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439, \u0435\u0441\u043b\u0438 \u043a \u043d\u0435\u0439 \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438, \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0435.<\/p>\n<p>  <\/p>\n<h3 id=\"uprazhnenie-1\">\u0423\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435 1<\/h3>\n<p>  <\/p>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0438\u0436\u0435 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432 \u0432\u044b\u0432\u043e\u0434\u0435 \u0431\u044b\u043b\u043e \u0447\u0438\u0441\u043b\u043e 10. \u0423\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044c\u0442\u0435\u0441\u044c \u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn double(mut x: u32) {     x *= 2; }  fn main() {     let x = 5;     double(x);     println!(&quot;{}&quot;, x); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430: \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u0443 (<em>asterisk<\/em>, <code>*<\/code>) \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0442\u044c (<em>dereference<\/em>) \u0441\u0441\u044b\u043b\u043a\u0443 \u0432 \u043d\u0435\u0439 (\u043f\u0440\u0438\u043c. \u2014 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0435\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u0441\u0441\u044b\u043b\u043a\u0435).<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"rust\">\/\/ \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c fn double(x: &amp;mut u32) {     \/\/ \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c     \/\/ \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442     *x *= 2; }  fn main() {     \/\/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c     let mut x = 5;     \/\/ \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c     double(&amp;mut x);     println!(&quot;{}&quot;, x); }<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<h2 id=\"iteratory\">\u0418\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/h2>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0438\u0436\u0435?<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let nums = vec![1, 2, 3, 4, 5];     for i in nums {         println!(&quot;{}&quot;, i);     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u043e\u043d\u0430 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0447\u0438\u0441\u043b\u0430 \u043e\u0442 1 \u0434\u043e 5. \u041d\u0443 \u043a\u0430\u043a \u043d\u0430\u0441\u0447\u0451\u0442 \u044d\u0442\u043e\u0439?<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     for i in 1..3 {         let nums = vec![1, 2, 3, 4, 5];         for j in nums {             println!(&quot;{},{}&quot;, i, j);         }     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u043d\u0430 \u0443\u0436\u0435 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 <code>1,1<\/code>, <code>1,2<\/code>, &#8230;, <code>2,1<\/code>, &#8230;, <code>2,5<\/code>. \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e-\u0442\u0430\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u043d\u0435\u043c <code>nums<\/code>. \u0427\u0442\u043e \u0431\u0443\u0434\u0435\u0442?<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let nums = vec![1, 2, 3, 4, 5];     for i in 1..3 {         for j in nums {             println!(&quot;{},{}&quot;, i, j);         }     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u043e\u043f\u0440\u043e\u0441 \u0431\u044b\u043b \u0441 \u043f\u043e\u0434\u0432\u043e\u0445\u043e\u043c. \u042d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u0430\u0436\u0435 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">error[E0382]: use of moved value: `nums`  --&gt; main.rs:4:18   | 4 |         for j in nums {   |                  ^^^^ value moved here in previous iteration of loop   |   = note: move occurs because `nums` has type `std::vec::Vec&lt;i32&gt;`, which does not implement the `Copy` trait  error: aborting due to previous error<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u043e \u0432 \u044d\u0442\u043e\u043c \u0435\u0441\u0442\u044c \u0441\u043c\u044b\u0441\u043b. \u041f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0446\u0438\u043a\u043b, \u043c\u044b <em>\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c<\/em> (<em>move<\/em>) <code>nums<\/code> \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0446\u0438\u043a\u043b. \u0417\u0430\u0442\u0435\u043c, \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u0445, \u043c\u044b \u0443\u0436\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>nums<\/code> \u0441\u043d\u043e\u0432\u0430. \u041b\u043e\u0433\u0438\u0447\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 <code>nums<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 <code>for<\/code>. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0435\u0433\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0432\u0430\u0436\u043d\u043e. \u041d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 <code>nums<\/code> \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u0447\u0435\u043d\u044c \u0437\u0430\u0442\u0440\u0430\u0442\u043d\u044b\u043c. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u0431\u044b \u043a \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u043c \u0440\u0430\u0441\u0445\u043e\u0434\u0430\u043c (\u043e\u0432\u0435\u0440\u0445\u0435\u0434\u0443)!<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u0430 <code>nums<\/code>, \u043c\u043e\u0436\u0435\u043c \u043b\u0438 \u043c\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 (borrowing)? \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043c\u043e\u0436\u0435\u043c!<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let nums = vec![1, 2, 3, 4, 5];     for i in 1..3 {         for j in &amp;nums {             println!(&quot;{},{}&quot;, i, j);         }     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u0434\u043b\u044f \u0432\u0430\u0441 \u0432\u043e\u043f\u0440\u043e\u0441: \u043a\u0430\u043a\u043e\u0439 \u0442\u0438\u043f \u0431\u0443\u0434\u0435\u0442 \u0443 <code>j<\/code>? \u042f \u043d\u0430\u0443\u0447\u0438\u043b\u0441\u044f \u0445\u0438\u0442\u0440\u043e\u043c\u0443 \u0442\u0440\u044e\u043a\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432. \u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0432\u043e\u0442 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c <code>println!<\/code>, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">let _: u32 = j;<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">error[E0308]: mismatched types  --&gt; src\/main.rs:5:26   | 5 |             let _: u32 = j;   |                    ---   ^   |                    |     |   |                    |     expected `u32`, found `&amp;{integer}`   |                    |     help: consider dereferencing the borrow: `*j`   |                    expected due to this<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0436\u0435, \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">let _: &amp;u32 = j;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u043d\u0430 <code>nums<\/code>, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0440\u0430\u0437\u0443\u043c\u043d\u043e. \u041c\u043e\u0436\u0435\u043c \u043c\u044b \u044d\u0442\u043e \u0443\u0432\u044f\u0437\u0430\u0442\u044c \u0441 \u043d\u0430\u0448\u0438\u043c &quot;\u043f\u0440\u0430\u0432\u0438\u043b\u043e\u043c \u0442\u0440\u0451\u0445&quot; \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c? \u0421\u043d\u043e\u0432\u0430 \u0434\u0430!<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let nums = vec![1, 2, 3, 4, 5];     for i in 1..3 {         for j in &amp;mut nums {             let _: &amp;mut u32 = j;             println!(&quot;{},{}&quot;, i, j);             *j *= 2;         }     } }<\/code><\/pre>\n<p>  <\/p>\n<p><strong>\u0427\u0435\u043b\u043b\u0435\u043d\u0434\u0436\u0438<\/strong>. \u0412 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0435\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0430. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0451 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0431\u0435\u0437 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a \u043e\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u0418 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435, \u043a\u0430\u043a\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u043e\u0434 \u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0435\u0451 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"rust\">fn main() {     \/\/ nums \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c     let mut nums = vec![1, 2, 3, 4, 5];     for i in 1..3 {         for j in &amp;mut nums {             let _: &amp;mut u32 = j;             println!(&quot;{},{}&quot;, i, j);             *j *= 2;         }     } }<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430\u0448\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0442\u0440\u0451\u0445 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u043d\u0430 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c, \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c, \u0438 \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c.<\/p>\n<p>  <\/p>\n<h2 id=\"novaya-nomenklatura\">\u041d\u043e\u0432\u0430\u044f \u043d\u043e\u043c\u0435\u043d\u043a\u043b\u0430\u0442\u0443\u0440\u0430<\/h2>\n<p>  <\/p>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <code>vec<\/code> \u0438\u043c\u0435\u0435\u0442 \u0442\u0440\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u0432\u044b\u0448\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c. \u041d\u0430\u0447\u043d\u0451\u043c \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u0441 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438, \u0433\u0434\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">for j in &amp;mut nums { ```Rust \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 ```Rust for j in nums.iter_mut() {<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">pub fn iter_mut(&amp;mut self) -&gt; IterMut&lt;T&gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>iter()<\/code>, \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u043a\u043e\u0434 \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u044f \u0441 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let nums = vec![1, 2, 3, 4, 5];     for i in 1..3 {         for j in nums.iter() {             let _: &amp;u32 = j;             println!(&quot;{}, {}&quot;, i, j);         }     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410 \u0447\u0442\u043e \u043d\u0430\u0441\u0447\u0451\u0442 \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c? \u041e\u043d\u043e \u0442\u043e\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 <code>into_iter()<\/code>. \u0418\u0434\u0435\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b <em>\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u043c<\/em> \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>\u0432<\/em> (<em>into<\/em>) \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440, \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u044f \u0435\u0433\u043e (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u044d\u0442\u043e <code>nums<\/code> \u0442\u0438\u043f\u0430 <code>Vec<\/code>). \u041a\u043e\u0434 \u043d\u0438\u0436\u0435 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041e\u0442 \u0432\u0430\u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>let nums<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let nums = vec![1, 2, 3, 4, 5];     for i in 1..3 {         for j in nums.into_iter() {             println!(&quot;{}, {}&quot;, i, j);         }     } }<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"rust\">fn main() {     for i in 1..3 {         \/\/ \u0442\u0430\u043a \u043a\u0430\u043a nums \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u0442\u0441\u044f \u0432 into_iter()         \/\/ \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438         let nums = vec![1, 2, 3, 4, 5];         for j in nums.into_iter() {             println!(&quot;{}, {}&quot;, i, j);         }     } }<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<h2 id=\"cikly-for-s-drugoy-storony\">\u0426\u0438\u043a\u043b\u044b for \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b<\/h2>\n<p>  <\/p>\n<p>\u0415\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u043d\u044b\u0439 \u0442\u0440\u044e\u043a, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044f \u043d\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u043f\u0440\u0435\u0436\u0434\u0435. \u0426\u0438\u043a\u043b\u044b <code>for<\/code> \u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u0438\u0435, \u0447\u0435\u043c \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b. \u041c\u0435\u0442\u043e\u0434 <code>into_iter()<\/code>, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0442\u0440\u0435\u0439\u0442\u0430 <code>IntoIterator<\/code>. \u0413\u0434\u0435 \u0431\u044b \u0432\u044b \u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 <code>for x in y<\/code>, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 <code>into_iter()<\/code> \u0434\u043b\u044f <code>y<\/code>. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0446\u0438\u043a\u043b\u0435 \u0442\u0438\u043f\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u0432\u043e\u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0440\u0435\u0439\u0442\u0430 <code>Iterator<\/code>.<\/p>\n<p>  <\/p>\n<h3 id=\"uprazhnenie-2\">\u0423\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435 2<\/h3>\n<p>  <\/p>\n<p>\u0417\u0430\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e <code>IntoIterator<\/code> \u0434\u043b\u044f \u0442\u0438\u043f\u0430 <code>InfiniteUnit<\/code>. <em>\u041d\u0415<\/em> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0439\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e <code>Iterator<\/code> \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u0430! \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f. (\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u0430\u043b\u043b\u044b: \u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0434\u0443\u0446\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f).<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">struct InfiniteUnit;  fn main() {     let mut count = 0;     for _ in InfiniteUnit {         count += 1;         println!(&quot;count == {}&quot;, count);         if count &gt;= 5 {             break;         }     } }<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"rust\">struct InfiniteUnit;  impl IntoIterator for InfiniteUnit {     type Item = ();     type IntoIter = InfiniteUnitIter;      fn into_iter(self) -&gt; Self::IntoIter {         InfiniteUnitIter     } }  struct InfiniteUnitIter;  impl Iterator for InfiniteUnitIter {     type Item = ();      fn next(&amp;mut self) -&gt; Option&lt;()&gt; {         Some(())     } }  fn main() {     let mut count = 0;     for _ in InfiniteUnit {         count += 1;         println!(&quot;count == {}&quot;, count);         if count &gt;= 5 {             break;         }     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u043c\u043d\u0435\u0435, \u0442.\u043a. \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0435\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>repeat<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0432\u0435\u0447\u043d\u044b\u0439 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">struct InfiniteUnit;  impl IntoIterator for InfiniteUnit {     type Item = ();     type IntoIter = std::iter::Repeat&lt;()&gt;;      fn into_iter(self) -&gt; Self::IntoIter {         std::iter::repeat(())     } }  fn main() {     let mut count = 0;     for _ in InfiniteUnit {         count += 1;         println!(&quot;count == {}&quot;, count);         if count &gt;= 5 {             break;         }     } }<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<h2 id=\"itogi-po-pravilu-tryoh-dlya-iteratorov\">\u0418\u0442\u043e\u0433\u0438 \u043f\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0443 \u0442\u0440\u0451\u0445 \u0434\u043b\u044f \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432<\/h2>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0438 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0438\u0434\u0443\u0442 \u0432 \u0442\u0440\u0451\u0445 \u0432\u0438\u0434\u0430\u0445 (<em>flavors<\/em>), \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0442\u0440\u0451\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u0445\u0435\u043c\u0430\u043c \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>into_iter<\/code> \u2014 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c, \u0441 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u043e\u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f<\/li>\n<li><code>iter<\/code> \u2014 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c<\/li>\n<li><code>iter_mut()<\/code> \u2014 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u043e\u043b\u044c\u043a\u043e <code>iter_mut()<\/code> \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0430\u043c\u0430 \u0431\u044b\u043b\u0430 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439.<\/p>\n<p>  <\/p>\n<h2 id=\"zamykaniya\">\u0417\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f<\/h2>\n<p>  <\/p>\n<p>\u0417\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u043f\u043e\u0445\u043e\u0436\u044b \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0435\u043c, \u0447\u0442\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438. \u0410 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 (local scope). \u041f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u044d\u0442\u043e \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u043e\u0432.<\/p>\n<p>  <\/p>\n<p><strong>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435<\/strong>: \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u0438\u0437 \u043d\u0435\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0432\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u0435, \u0447\u0442\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u0432 \u0420\u0430\u0441\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u044b, \u0438 \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u0438\u0437 \u0444\u0443\u043a\u043d\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0443\u0442\u043e\u043c\u043b\u044f\u0442\u044c \u0442\u043e, \u043a\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0434\u0443\u043c\u0430\u0442\u044c \u043e \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f\u043c\u0438. \u041a\u0430\u043a \u0445\u0430\u0441\u043a\u0435\u043b\u0438\u0441\u0442, \u044f \u0432\u0441\u0451 \u0435\u0449\u0451 \u0437\u0430\u0442\u044b\u043a\u0430\u044e\u0441\u044c \u043d\u0430 \u044d\u0442\u043e\u043c \u0430\u0441\u043f\u0435\u043a\u0442\u0435 \u044f\u0437\u044b\u043a\u0430. \u042f \u043e\u0431\u0435\u0449\u0430\u044e, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u044b \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u044f\u0437\u044b\u043a\u0430 \u043b\u043e\u0433\u0438\u0447\u043d\u044b \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439, \u043d\u043e \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0431\u0440\u0435\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0425\u0430\u0441\u043a\u0435\u043b\u043b\u0435\u043c \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 JS.<\/p>\n<p>  <\/p>\n<p>\u0412\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439. \u0412\u044b \u0437\u043d\u0430\u043b\u0438, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <em>\u0432\u043d\u0443\u0442\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/em>?<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     fn say_hi() {         let msg: &amp;str = &quot;Hi!&quot;;         println!(&quot;{}&quot;, msg);     };      say_hi();     say_hi(); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u0437\u044f\u0449\u043d\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043b\u0435\u0433\u043a\u0430 \u043e\u0442\u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let msg: &amp;str = &quot;Hi!&quot;;     fn say_hi() {         println!(&quot;{}&quot;, msg);     };     say_hi();     say_hi(); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">error[E0434]: can't capture dynamic environment in a fn item  --&gt; main.rs:4:24   | 4 |         println!(&quot;{}&quot;, msg);   |                        ^^^   |   = help: use the `|| { ... }` closure form instead  error: aborting due to previous error<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u043c <em>\u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e<\/em> \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435. \u041f\u0435\u0440\u0435\u043f\u0438\u0448\u0435\u043c \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let msg: &amp;str = &quot;Hi!&quot;;     let say_hi = || {         println!(&quot;{}&quot;, msg);     };     say_hi();     say_hi(); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 (\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 <code>||<\/code>), \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>  <\/p>\n<p><strong>\u0417\u0430\u043c\u0435\u0442\u043a\u0430<\/strong>: \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>let say_hi = || println!(&quot;{}&quot;, msg);<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0447\u0443\u0442\u044c \u0438\u0434\u0438\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0435\u0435.<\/p>\n<p>  <\/p>\n<h3 id=\"uprazhnenie-3\">\u0423\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435 3<\/h3>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u043f\u0438\u0448\u0438\u0442\u0435 \u0432\u044b\u0448\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 <code>say_hi<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0430 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442: \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>msg<\/code>. \u0417\u0430\u0442\u0435\u043c \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u0441 <code>fn<\/code>.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u0412\u0435\u0440\u0441\u0438\u044f \u0441 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let msg: &amp;str = &quot;Hi!&quot;;     let say_hi = |msg| println!(&quot;{}&quot;, msg);     say_hi(msg);     say_hi(msg); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0432\u0435\u0440\u0441\u0438\u044f \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let msg: &amp;str = &quot;Hi!&quot;;     fn say_hi(msg: &amp;str) {         println!(&quot;{}&quot;, msg);     }     say_hi(msg);     say_hi(msg); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a <code>say_hi<\/code> \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438.<\/p>\n<\/div><\/div>\n<p>  <\/p>\n<h2 id=\"tip-zamykaniya\">\u0422\u0438\u043f \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f<\/h2>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a\u043e\u0439 \u0436\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0438\u043f \u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>say_hi<\/code>? \u042f \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u0433\u0440\u044f\u0437\u043d\u044b\u043c \u0442\u0440\u044e\u043a\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0430\u043c \u044d\u0442\u043e\u0442 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c: \u043f\u0435\u0440\u0435\u0434\u0430\u043c \u0435\u043c\u0443 <em>\u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439<\/em> \u0442\u0438\u043f, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0438\u043f\u043e\u043c <code>u32<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u0435\u0433\u043e \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let msg: &amp;str = &quot;Hi!&quot;;     let say_hi: u32 = |msg| println!(&quot;{}&quot;, msg); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">error[E0308]: mismatched types  --&gt; src\/main.rs:3:23   | 3 |     let say_hi: u32 = |msg| println!(&quot;{}&quot;, msg);   |                 ---   ^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u32`, found closure   |                 |   |                 expected due to this   |   = note: expected type `u32`           found closure `[closure@src\/main.rs:3:23: 3:48]`<\/code><\/pre>\n<p>  <\/p>\n<p><code>[closure@main.rs:3:23: 3:48]<\/code> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c \u0442\u0438\u043f\u043e\u043c\u2026 \u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u0430\u0442\u044c \u0435\u043c\u0443 \u0448\u0430\u043d\u0441 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0439\u0434\u0435\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let msg: &amp;str = &quot;Hi!&quot;;     let say_hi: [closure@main.rs:3:23: 3:48] = |msg| println!(&quot;{}&quot;, msg); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043e\u0442\u0432\u0435\u0440\u0433\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">error: expected one of `!`, `(`, `+`, `::`, `;`, `&lt;`, or `]`, found `@`  --&gt; src\/main.rs:3:25   | 3 |     let say_hi: [closure@main.rs:3:23: 3:48] = |msg| println!(&quot;{}&quot;, msg);   |         ------          ^ expected one of 7 possible tokens   |         |   |         while parsing the type for `say_hi`<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 \u0442\u0438\u043f. \u041e \u0447\u0451\u043c \u0436\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0430\u043c \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442?<\/p>\n<p>  <\/p>\n<h2 id=\"anonimnye-tipy\">\u0410\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0435 \u0442\u0438\u043f\u044b<\/h2>\n<p>  <\/p>\n<p>\u0412 \u0420\u0430\u0441\u0442\u0435 \u0442\u0438\u043f\u044b \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u043c\u0438. \u041c\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0438\u0445 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u041d\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043d\u0430\u0441 \u043a \u0437\u0430\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0443. \u0427\u0442\u043e, \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u043e\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let say_message = |msg: &amp;str| println!(&quot;{}&quot;, msg);     call_with_hi(say_message);     call_with_hi(say_message); }  fn call_with_hi&lt;F&gt;(f: F) {     f(&quot;Hi!&quot;); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0438 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>msg<\/code>. \u0414\u043b\u044f \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439 \u044d\u0442\u043e, \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u043e\u0432 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f. \u0410 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u043e\u0432 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0418 \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0437\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0442\u0430\u043a \u0436\u0435 \u0435\u0441\u0442\u044c \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>F<\/code>, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u043c \u043e\u0431 <code>F<\/code>, \u043d\u043e \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0432\u0438\u0434\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">error[E0618]: expected function, found `F`  --&gt; src\/main.rs:8:5   | 7 | fn call_with_hi&lt;F&gt;(f: F) {   |                    - `F` defined here 8 |     f(&quot;Hi!&quot;);   |     ^-------   |     |   |     call expression requires function<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e: \u0432\u0435\u0434\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e <code>F<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439. \u041d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u0430\u043a\u0438 \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043c\u0430\u0433\u0438\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u0441\u0451 \u044d\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f: \u0442\u0440\u0435\u0439\u0442 <code>Fn<\/code>!<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn call_with_hi&lt;F&gt;(f: F)     where F: Fn(&amp;str) -&gt; () {     f(&quot;Hi!&quot;); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 <code>F<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0442\u0438\u043f\u0430 <code>&amp;str<\/code>, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0435\u0439 \u043f\u0443\u0441\u0442\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043f\u0443\u0441\u0442\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0442\u0430\u043a \u0447\u0442\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn call_with_hi&lt;F&gt;(f: F)     where F: Fn(&amp;str) {     f(&quot;Hi!&quot;); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0440\u0443\u0433\u0430\u044f \u043a\u043b\u0451\u0432\u0430\u044f \u0448\u0442\u0443\u043a\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0440\u0435\u0439\u0442 <code>Fn<\/code> \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439, \u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438.<\/p>\n<p>  <\/p>\n<h3 id=\"uprazhnenie-4\">\u0423\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435 4<\/h3>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u043f\u0438\u0448\u0438\u0442\u0435 <code>say_message<\/code> \u0432 \u0432\u0438\u0434\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>\u043d\u0435 \u0432\u043d\u0443\u0442\u0440\u0438<\/em> \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>main<\/code>, \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"rust\">fn main() {     call_with_hi(say_message);     call_with_hi(say_message); }  fn say_message(msg: &amp;str) {     println!(&quot;{}&quot;, msg); }  fn call_with_hi&lt;F&gt;(f: F)     where F: Fn(&amp;str) {     f(&quot;Hi!&quot;); }<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0431\u044b <code>say_message<\/code> \u043d\u0435 \u0431\u044b\u043b\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435\u043c, \u0442\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u043a\u0443\u0447\u043d\u043e\u0432\u0430\u0442\u043e. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043c \u044d\u0442\u043e.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let name = String::from(&quot;Alice&quot;);     let say_something = |msg: &amp;str| println!(&quot;{}, {}&quot;, msg, name);     call_with_hi(say_something);     call_with_hi(say_something);     call_with_bye(say_something);     call_with_bye(say_something); }  fn call_with_hi&lt;F&gt;(f: F)     where F: Fn(&amp;str) {     f(&quot;Hi&quot;); }  fn call_with_bye&lt;F&gt;(f: F)     where F: Fn(&amp;str) {     f(&quot;Bye&quot;); }<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"izmenyaemye-peremennye\">\u0418\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435<\/h2>\n<p>  <\/p>\n<p>\u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u0434\u043e\u0431\u0440\u044b\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u0434\u0435\u043d\u044c\u043a\u0438 \u0441\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u044d\u0442\u043e\u0442 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u043f\u044b\u0442!<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let mut count = 0;      for _ in 1..6 {         count += 1;         println!(&quot;You are visitor #{}&quot;, count);     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u044d\u0442\u043e \u0436\u0435 \u0442\u0430\u043a \u0441\u043a\u0443\u0447\u043d\u043e! \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u043e\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let mut count = 0;     let visit = || {         count += 1;         println!(&quot;You are visitor #{}&quot;, count);     };      for _ in 1..6 {         visit();     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0441\u043e\u0433\u043b\u0430\u0448\u0430\u0435\u0442\u0441\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">error[E0596]: cannot borrow `visit` as mutable, as it is not declared as mutable  --&gt; src\/main.rs:9:9   | 3 |     let visit = || {   |         ----- help: consider changing this to be mutable: `mut visit` ... 9 |         visit();   |         ^^^^^ cannot borrow as mutable<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u044d\u2026 \u0447\u0442\u043e? \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0435\u0451 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435. \u042d\u0442\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442, \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0451 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437. \u041d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u041a\u0430\u043a \u0436\u0435 \u0431\u044b\u0442\u044c?<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0430: <code>visit<\/code> \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 (captured) \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>count<\/code>. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043b\u044e\u0431\u043e\u0435 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 <code>visit<\/code> \u0442\u0430\u043a \u0436\u0435 \u043d\u0435\u044f\u0432\u043d\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 <code>count<\/code>. \u0412 \u044d\u0442\u043e\u043c \u0435\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0430. \u041d\u043e \u043a\u0430\u043a \u043d\u0430\u0441\u0447\u0451\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0442\u0438\u043f\u043e\u0432? \u041a\u0430\u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u044d\u0442\u0443 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c? \u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u044d\u0442\u043e, \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let mut count = 0;     let visit = || {         count += 1;         println!(&quot;You are visitor #{}&quot;, count);     };      call_five_times(visit); }  fn call_five_times&lt;F&gt;(f: F)     where F: Fn() {     for _ in 1..6 {         f();     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">error[E0525]: expected a closure that implements the `Fn` trait, but this closure only implements `FnMut`<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u0438\u043b\u043e! \u0412 \u0420\u0430\u0441\u0442 \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0440\u0435\u0439\u0442\u0430 \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439: \u043e\u0434\u0438\u043d \u0434\u043b\u044f \u0442\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442 \u0441\u0432\u043e\u0451 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 (<code>Fn<\/code>), \u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0435\u043d\u044f\u044e\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 (<code>FnMut<\/code>). \u0422\u0430\u043a \u0447\u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u043c <code>Fn<\/code> \u043d\u0430 <code>FnMut<\/code> \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>where<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0435\u0449\u0451 \u043e\u0448\u0438\u0431\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">error[E0596]: cannot borrow immutable argument `f` as mutable   --&gt; main.rs:16:9    | 11 | fn call_five_times&lt;F&gt;(f: F)    |                       - help: make this binding mutable: `mut f` ... 16 |         f();    |         ^ cannot borrow mutably<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u044b\u0437\u043e\u0432 \u044d\u0442\u043e\u0439 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043a\u0430\u043a \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439. \u0412\u043e\u0442\u043a\u043d\u0451\u043c <code>mut<\/code> \u043f\u0435\u0440\u0435\u0434 <code>f: F<\/code> \u0438 \u0431\u0443\u0434\u0435\u043c \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u044b.<\/p>\n<p>  <\/p>\n<h2 id=\"mnozhestvennye-treyty\">\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0442\u0440\u0435\u0439\u0442\u044b?<\/h2>\n<p>  <\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0435\u0439\u0442\u0443 <code>Fn<\/code> \u0438\u043b\u0438 <code>FnMut<\/code>?<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">|| println!(&quot;Hello World!&quot;);<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u043d\u043e \u043d\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 <code>Fn<\/code>. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>call_five_times<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0436\u0438\u0434\u0430\u0435\u0442 <code>FnMut<\/code>, \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u043e\u0448\u0438\u0431\u043a\u0435? \u041d\u0435 \u0442\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u2014 \u0432\u0441\u0451 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442! \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">call_five_times(|| println!(&quot;Hello World!&quot;));<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0430\u0436\u0434\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0442\u0440\u0435\u0439\u0442 <code>Fn<\/code> \u0442\u0430\u043a \u0436\u0435 <em>\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438<\/em> \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0438 <code>FnMut<\/code>. \u042d\u0442\u043e \u0441\u0440\u043e\u0434\u043d\u0438 \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439: \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430, \u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u043c\u0443\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u0434\u043b\u044f \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u0441\u0442\u0440\u043e\u0436\u0435. \u0421\u0445\u043e\u0434\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (<code>FnMut<\/code>) \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e, \u0442\u043e \u0434\u043b\u044f \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (<code>Fn<\/code>) \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435.<\/p>\n<p>  <\/p>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u043f\u043e\u0434\u0442\u0438\u043f\u044b (subtyping)? \u0414\u0430, \u0442\u0430\u043a \u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c.<\/p>\n<p>  <\/p>\n<h2 id=\"pravilo-tryoh\">\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u0442\u0440\u0451\u0445?<\/h2>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0443 \u043d\u0430\u0441 \u0443\u0440\u043e\u043a \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c &quot;\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u0442\u0440\u0451\u0445&quot;, \u0430 \u0443 \u043d\u0430\u0441 \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0442\u0438\u043f\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041c\u044b \u0432\u0438\u0434\u0435\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437 \u0432 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435, \u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0441 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438. \u041c\u044b \u0432\u0438\u0434\u0435\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437 \u0432 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435, \u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0441 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438. \u0422\u0430\u043a \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u2014 \u0432\u044b\u0437\u043e\u0432 \u0441 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c (value\/move semantics).<\/p>\n<p>  <\/p>\n<p>\u041e\u0431\u044a\u044f\u0432\u0438\u043c \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u0440\u0430\u0434\u0451\u0442 (moves) \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0438\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0442\u0438\u043f\u0430 <code>String<\/code> \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e (<code>Copy<\/code>able) \u0442\u0438\u043f\u0430 <code>u32<\/code>. \u0418 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u0430\u0433\u0438\u0438 \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0441\u044b\u043b\u043e\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u0427\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u043c\u044b \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u043c\u0441\u044f \u0432 \u0434\u0435\u0442\u0430\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u044e\u043a\u0430, \u0438 \u0443\u0432\u0438\u0434\u0435\u043c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let name = String::from(&quot;Alice&quot;);      let welcome = || {         let name = name; \/\/ \u0442\u0443\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043c\u0430\u0433\u0438\u044f         println!(&quot;Welcome, {}&quot;, name);     };      welcome(); }<\/code><\/pre>\n<p>  <\/p>\n<p><code>name<\/code> \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 <code>welcome<\/code>. \u042d\u0442\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>let name = name;<\/code>. \u0412\u0441\u0451 \u0435\u0449\u0451 \u0441\u043e\u043c\u043d\u0435\u0432\u0430\u0435\u0442\u0435\u0441\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e <code>name<\/code> \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u043e? \u041f\u043e\u0433\u043b\u044f\u0434\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let name1 = String::from(&quot;Alice&quot;);      let welcom = || {         let mut name2 = name1;         name2 += &quot; and Bob&quot;;         println!(&quot;Welcome, {}&quot;, name2);     };      welcome(); }<\/code><\/pre>\n<p>  <\/p>\n<p><code>name1<\/code> \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043e <em>\u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c<\/em>. \u041d\u043e <code>name2<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c, \u0438 \u043c\u044b \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c, \u043c\u0435\u043d\u044f\u044f \u0435\u0433\u043e. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u0435\u0441\u043b\u0438 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0435\u0433\u043e \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u0430 \u043d\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435. \u0425\u043e\u0442\u0438\u0442\u0435 \u0435\u0449\u0451 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e? \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>name1<\/code> \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0438 <code>welcome()<\/code>.<\/p>\n<p>  <\/p>\n<h2 id=\"tretiy-treyt-funkciy\">\u0422\u0440\u0435\u0442\u0438\u0439 \u0442\u0440\u0435\u0439\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/h2>\n<p>  <\/p>\n<p>\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043c \u043d\u0430\u0448\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0442\u0440\u0451\u0445. \u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u043d\u0430\u0448\u0435 <code>call_five_times<\/code>? \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0434\u043b\u044f <code>welcome<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let name = String::from(&quot;Alice&quot;);      let welcome = || {         let mut name = name;         name += &quot; and Bob&quot;;         println!(&quot;Welcome, {}&quot;, name);     };      call_five_times(welcome); }  fn call_five_times&lt;F&gt;(f: F) where     F: Fn(), {     for _ in 1..6 {         f();     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0441\u0441\u044b\u043b\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u043d\u0430 <code>FnOnce<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">error[E0525]: expected a closure that implements the `Fn` trait, but this closure only implements `FnOnce`   --&gt; main.rs:4:19    | 4  |     let welcome = || {    |                   ^^ this closure implements `FnOnce`, not `Fn` 5  |         let mut name = name;    |                        ---- closure is `FnOnce` because it moves the variable `name` out of its environment ... 10 |     call_five_times(welcome);    |     --------------- the requirement to implement `Fn` derives from here<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u043c\u0435\u043d\u0430 <code>Fn()<\/code> \u043d\u0430 <code>FnOnce()<\/code> \u0434\u043e\u043b\u0436\u043d\u0430 \u0436\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u0432\u0435\u0440\u043d\u043e? \u041a\u0430\u043a\u0431\u044b \u043d\u0435 \u0442\u0430\u043a!<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">error[E0382]: use of moved value: `f`   --&gt; main.rs:18:9    | 18 |         f();    |         ^ value moved here in previous iteration of loop    |    = note: move occurs because `f` has type `F`, which does not implement the `Copy` trait<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u0448 \u0446\u0438\u043a\u043b \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u043c <code>f<\/code> \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u041d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c <code>f<\/code>, \u043c\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 <em>\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0432\u044b\u0437\u0432\u0430\u043d\u0430<\/em>. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0442\u0440\u0435\u0439\u0442 \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>FnOnce<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u043f\u0438\u0448\u0435\u043c \u044d\u0442\u043e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let name = String::from(&quot;Alice&quot;);      let welcome = || {         let mut name = name;         name += &quot; and Bob&quot;;         println!(&quot;Welcome, {}&quot;, name);     };      call_once(welcome); }  fn call_once&lt;F&gt;(f: F) where     F: FnOnce() {     f(); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043d\u0430\u0434\u043e.<\/p>\n<p>  <\/p>\n<h2 id=\"dalneyshee-podtipirovanie-funkcii\">\u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u043f\u043e\u0434\u0442\u0438\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/h2>\n<p>  <\/p>\n<p>\u0427\u0443\u0442\u044c \u0440\u0430\u043d\u044c\u0448\u0435 \u043c\u044b \u0441\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0440\u0435\u0439\u0442 <code>Fn<\/code> \u0442\u0430\u043a \u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u0435\u0439\u0442\u043e\u043c <code>FnMut<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0435\u0437\u0434\u0435, \u0433\u0434\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0432\u044b \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0438 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e. \u042d\u0442\u043e \u043f\u043e\u0434\u0432\u043e\u0434\u0438\u0442 \u043a \u043c\u044b\u0441\u043b\u0438, \u0447\u0442\u043e \u0442\u0440\u0435\u0439\u0442\u044b <code>Fn<\/code> \u0438 <code>FnOnce<\/code> \u0442\u0430\u043a \u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u0442\u0440\u0435\u0439\u0442 <code>FnOnce<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0441 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c \u0438\u043b\u0438 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>  <\/p>\n<h2 id=\"klyuchevoe-slovo-move\">\u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>move<\/code><\/h2>\n<p>  <\/p>\n<p>\u0415\u0441\u0442\u044c \u0442\u043e\u043d\u043a\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043b \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u044d\u0442\u043e\u0442 \u0443\u0440\u043e\u043a (\u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0421\u0432\u0435\u043d\u0443 \u041c\u0430\u0440\u043d\u0430\u0445\u0443 \u0437\u0430 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435). \u0413\u043b\u0430\u0432\u0430 &quot;Rust by Example&quot; \u043f\u0440\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u0431\u044b\u043b\u0430 \u043b\u0443\u0447\u0448\u0438\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435. \u042f \u0441\u0434\u0435\u043b\u0430\u044e \u0432\u0441\u0451 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u0441\u0430\u043c.<\/p>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0432\u043d\u043e, \u0441 \u043f\u043e\u043b\u043d\u044b\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435. \u0417\u0430\u0442\u0435\u043c \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0438\u0437 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u0430\u0431\u044b\u0445 \u0444\u043e\u0440\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0436\u0435, \u0432\u044b <em>\u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435<\/em> \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn pass_by_value(_x: String) {} fn pass_by_ref(_x: &amp;String) {}  fn pass_by_mut_ref(x: &amp;mut String) {     pass_by_ref(x);     \/\/ \u0442\u0443\u0442 \u0432\u0441\u0451 \u043e\u0442\u043b\u0438\u0447\u043d\u043e     pass_by_value(*x);  \/\/ \u0430 \u0442\u0443\u0442 \u0443\u0436\u0435 \u043d\u0435\u0442 }  fn main() {}<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043d\u043e \u0430\u043d\u043d\u0442\u043e\u0442\u0430\u0446\u0438\u0438 \u0442\u0438\u043f\u043e\u0432 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b. \u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u0438\u0445, \u0442\u043e \u043e\u043d\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043d\u0435\u044f\u0432\u043d\u044b\u043c\u0438 (implicit). \u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u044d\u0442\u043e\u043c\u0443, \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u0430\u043c \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435. \u041e\u043d\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0430\u043d\u043d\u043e\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 <em>\u0432\u0441\u0435\u0433\u0434\u0430<\/em> \u044f\u0432\u043b\u044e\u044f\u0442\u0441\u044f \u043d\u0435\u044f\u0432\u043d\u044b\u043c\u0438. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043d\u0443\u0436\u043d\u0430 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d\u044b (captured), \u043d\u0430 \u043f\u043e\u0434\u043e\u0431\u0438\u0438 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u0443\u0437\u043d\u0430\u0451\u043c, \u043a\u0430\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0422\u043e, \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0435\u043c \u0436\u0435 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u0440\u0430\u0432\u0438\u043b \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0420\u0430\u0441\u0442, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0415\u0441\u043b\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435, \u0442\u043e\u0433\u0434\u0430 \u0432 \u0442\u043e\u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043c\u043e\u0433\u0443\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/li>\n<li>\u0415\u0441\u043b\u0438 \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u0442\u043e \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c. \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 (is dropped), \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u043d\u043e\u0432\u0430.<\/li>\n<li>\u0415\u0441\u043b\u0438 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0433\u0434\u0435-\u043b\u0438\u0431\u043e \u0441\u043d\u043e\u0432\u0430 (\u042d\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 <em>\u0432\u043b\u0430\u0434\u0435\u0435\u0442<\/em> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u0442\u044c \u0432\u0430\u0436\u043d\u043e\u0435 \u0438 \u0442\u043e\u043d\u043a\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f\u043c\u0438 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438:<\/p>\n<p>  <\/p>\n<blockquote><p>\u0417\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0432\u043b\u0430\u0434\u0435\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 \u043d\u0435\u0442.<\/p><\/blockquote>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0438 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u0435\u0440\u0451\u0442 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041d\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u0438\u0435: \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 <em>\u0441\u0430\u043c\u043e<\/em> \u043c\u043e\u0436\u0435\u0442 \u0432\u043b\u0430\u0434\u0435\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u0437\u043e\u0432\u0430. \u041f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u044d\u0442\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     \/\/ owned by main     let name_outer = String::from(&quot;Alice&quot;);      let say_hi || {         \/\/ force a move, again, we'll get smarter in a second         let name_inner = name_outer;         println!(&quot;Hello, {}&quot;, name_inner);     };      \/\/ main no longer owns name_outer, try this:     println!(&quot;Using name from main: {}&quot;, name_outer); \/\/ error!      \/\/ but name_inner lives on, in say_hi!     say_hi(); \/\/ success }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u043d\u0438 \u0441\u0442\u0430\u0440\u0430\u0439\u0441\u044f, \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0442\u043e\u0433\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0441\u0442\u0430\u0440\u044b\u0445 (\u0434\u043e\u0431\u0440\u044b\u0445) \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u2014 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c <code>name_outer<\/code> \u0436\u0438\u0432\u044b\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0435\u0433\u043e.<\/p>\n<p>  <\/p>\n<p>\u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0443\u043c\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435. \u0412 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0438 \u0432\u044b\u0448\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c <code>let name_inner = name_outer;<\/code>. \u042d\u0442\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>name_outer<\/code> \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e. \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u044d\u0442\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0434\u0438\u043d\u043e\u0436\u0434\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u0442 <code>name_outer<\/code> \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435. (\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u0437\u043e\u0432 <code>say_hi()<\/code>). \u041d\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0432\u043d\u0443\u0442\u0440\u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0451\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435. \u0423 \u043d\u0430\u0441 <em>\u0434\u043e\u043b\u0436\u043d\u0430<\/em> \u0431\u044b\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u0415\u0441\u043b\u0438 \u043c\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u043c\u044b \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435, \u043e\u0441\u0442\u0430\u0432\u0438\u0432 <code>name_outer<\/code> \u0432 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     \/\/ owned by main     let name_outer = String::from(&quot;Alice&quot;);      let say_hi || {         \/\/ use by ref         let name_inner = &amp;name_outer;         println!(&quot;Hello, {}&quot;, name_inner);     };      \/\/ main still owns name_outer, this is fine     println!(&quot;Using name from main: {}&quot;, name_outer); \/\/ success      \/\/ but name_inner lives on, in say_hi!     say_hi(); \/\/ success     say_hi(); \/\/ success }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0436\u0435, \u0435\u0441\u043b\u0438 \u043c\u044b \u0447\u0443\u0442\u044c \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0442\u0430\u043a, \u0447\u0442\u043e <code>name_outer<\/code> \u0438\u0441\u0447\u0435\u0437\u043d\u0435\u0442 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434 <code>say_hi<\/code>, \u0432\u0441\u0451 \u0441\u043d\u043e\u0432\u0430 \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u0442\u0441\u044f!<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let say_hi = { \/\/ \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043c\u0435\u043d\u044c\u0448\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438         \/\/         let name_outer = String::from(&quot;Alice&quot;);          \/\/ \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0442\u043a\u0430\u043a \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f         || {             \/\/ use by ref             let name_inner = &amp;name_outer;             println!(&quot;Hello, {}&quot;, name_inner);         }     };      \/\/ \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u0435\u0440\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a name_outer \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438     \/\/ println!(&quot;Using name from main: {}&quot;, name_outer); \/\/ error!      say_hi();     say_hi(); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e, \u0442\u0430\u043a \u044d\u0442\u043e \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c: &quot;\u041c\u043d\u0435 \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0432\u043b\u0430\u0434\u0435\u043b\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u043b\u043e, \u043d\u043e \u044f \u043d\u0435 \u0445\u043e\u0447\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e (\u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u2014 \u043f\u0440\u0438\u043c.)&quot;. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f\u043c \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u043e \u0432\u0441\u0451 \u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437. \u0418 \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>move<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let say_hi = {         let name_outer = String::from(&quot;Alice&quot;);          move || {             let name_inner = &amp;name_outer;             println!(&quot;Hello, {}&quot;, name_inner);         }     }      say_hi();     say_hi(); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u043b\u0430\u0434\u0435\u043d\u0438\u0435 <code>name_outer<\/code> \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043e\u0442 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044e. \u041c\u044b \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435, \u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437.<\/p>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <code>move<\/code> \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435, \u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0438\u0445 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043d\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let name = String::from(&quot;Alice&quot;);     let _ = move || { println!(&quot;Hello, {}&quot;, name) };      println!(&quot;Using name from main: {}&quot;, name); \/\/ error! } <\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"neohotnyy-rust\">\u041d\u0435\u043e\u0445\u043e\u0442\u043d\u044b\u0439 Rust<\/h2>\n<p>  <\/p>\n<p>\u0415\u0449\u0451 \u043e\u0434\u043d\u043e \u0437\u0430\u043c\u0435\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u043e\u0434\u0432\u0435\u0434\u0451\u043c \u0438\u0442\u043e\u0433\u0438 \u0438 \u043e\u043a\u0443\u043d\u0451\u043c\u0441\u044f \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u044b. \u0422\u0438\u043f \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0432 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f\u0445 \u043d\u0435\u044f\u0432\u0435\u043d. \u041a\u0430\u043a \u0436\u0435 \u0420\u0430\u0441\u0442 \u0440\u0435\u0448\u0430\u0435\u0442, \u0447\u0442\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u0447\u0442\u043e \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u0430 \u0447\u0442\u043e \u043f\u043e \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439? \u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0434\u0443\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0420\u0430\u0441\u0442 \u0432 \u044d\u0442\u043e\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0435 \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u043d\u0435\u043e\u0445\u043e\u0442\u043d\u043e: \u043e\u043d \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u0445\u0432\u0430\u0442 \u0441 \u043d\u0430\u0438\u043c\u0435\u043d\u0435\u0448\u044c\u043c\u0438 \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. \u041f\u0430\u0440\u0430\u0444\u0440\u0430\u0437 \u0438\u0437 Rust by Example:<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u043f\u043e\u0442\u043e\u043c \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 <code>let name_inner = name_outer;<\/code> \u043c\u044b \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u0445\u0432\u0430\u0442 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e. \u041e\u0434\u043d\u0430\u043a\u043e \u0436\u0435, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u043b\u044e\u0431\u0438\u0442 \u0442\u0430\u043a\u043e\u0435 \u0434\u0435\u043b\u0430\u0442\u044c, \u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0451\u0442 \u0437\u0430\u0445\u0432\u0430\u0442 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 (\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439), \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0441\u0442\u0440\u043e\u0433\u043e\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0415\u0441\u043b\u0438 \u043b\u044e\u0431\u0430\u044f \u0447\u0430\u0442\u044c \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u0442\u043e \u044d\u0442\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e.<\/li>\n<li>\u0418\u043d\u0430\u0447\u0435, \u0435\u0441\u043b\u0438 \u043b\u044e\u0431\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u0442\u043e \u044d\u0442\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435.<\/li>\n<li>\u0418\u043d\u0430\u0447\u0435, \u0435\u0441\u043b\u0438 \u043b\u044e\u0431\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u043e \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u0442\u043e \u044d\u0442\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043f\u043e \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0437\u0430\u0445\u0432\u0430\u0442 \u0441 \u043d\u0435\u043e\u0445\u043e\u0442\u043e\u0439 <em>\u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043e\u0448\u0438\u0431\u043a\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438<\/em>. \u0417\u0430\u0445\u0432\u0430\u0442 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c \u0441 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u0440\u0435\u043c\u0451\u043d \u0436\u0438\u0437\u043d\u0438, \u043a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u0432\u0438\u0434\u0435\u043b\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u0420\u0430\u0441\u0442 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0430 \u0441\u0430\u043c\u043e \u0442\u0435\u043b\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u0445\u0432\u0430\u0442 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u0440\u0435\u043c\u0451\u043d \u0436\u0438\u0437\u043d\u0438, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>move<\/code>, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e.<\/p>\n<p>  <\/p>\n<p><strong>\u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/strong> \u041c\u043e\u0436\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0432\u0430\u0448\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438 \u043d\u0435 \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c <code>move<\/code>. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430: \u043b\u043e\u0433\u0438\u043a\u0430 &quot;\u0441\u0434\u0435\u043b\u0430\u0439 \u0442\u043e, \u0447\u0442\u043e \u044f \u0438\u043c\u0435\u043b \u0432 \u0432\u0438\u0434\u0443&quot; \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0445\u0440\u0443\u043f\u043a\u0430 \u0438 \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0441\u0442\u044f\u043c.<\/p>\n<p>  <\/p>\n<h2 id=\"povtor-vladenie-zahvat-i-ispolzovanie\">\u041f\u043e\u0432\u0442\u043e\u0440: \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435, \u0437\u0430\u0445\u0432\u0430\u0442 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u041f\u043e\u0432\u0442\u043e\u0440 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0412\u043d\u0443\u0442\u0440\u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435.<\/li>\n<li>\u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u044d\u0442\u043e\u043c\u0443, \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435\u043c, \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435.<\/li>\n<li>\u041c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438, \u0441\u0438\u043b\u044c\u043d\u0435\u0435, \u0447\u0435\u043c \u043e\u043d\u0430 \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d\u0430. \u0415\u0441\u043b\u0438 \u043c\u044b \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0430\u043a \u0436\u0435 \u043f\u043e \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u043d\u043e \u043d\u0435 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e.<\/li>\n<li>\u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0436\u0438\u0437\u043d\u0438, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 <code>move<\/code>.<\/li>\n<li>\u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0442\u0440\u0435\u0439\u0442\u043e\u0432 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439:<br \/> \n<ul>\n<li>\u0415\u0441\u043b\u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u0442\u043e \u043e\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0440\u0435\u0439\u0442\u0443 <code>FnOnce<\/code>.<\/li>\n<li>\u0418\u043d\u0430\u0447\u0435, \u0435\u0441\u043b\u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u0442\u043e \u043e\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0440\u0435\u0439\u0442\u0443 <code>FnMut<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u0435\u0439\u0442\u043e\u043c <code>FnOnce<\/code>.<\/li>\n<li>\u0418\u043d\u0430\u0447\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0440\u0435\u0439\u0442\u0443 <code>Fn<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u0435\u0439\u0442\u0430\u043c\u0438 \u0438 <code>FnMut<\/code> \u0438 <code>FnOnce<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u042f \u043f\u0440\u0438\u0448\u0451\u043b \u043a \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e, \u0447\u0442\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u044b, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0432\u043a\u043b\u044e\u0447\u0438\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0443\u044f\u0441\u043d\u0438\u0442\u044c. \u041e\u043d\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0438\u0437 Rust by example.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0438\u0436\u0435, \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0442\u0440\u0451\u0445 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043a\u043d\u0446\u0438\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn call_fn&lt;F&gt;(f: F) where F: Fn() {     f() }  fn call_fn_mut&lt;F&gt;(mut f: F) where F: FnMut() {     f() }  fn call_fn_once&lt;F&gt;(f: F) where F: FnOnce() {     f() }<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"primery\">\u041f\u0440\u0438\u043c\u0435\u0440\u044b<\/h2>\n<p>  <\/p>\n<p>\u0418\u043c\u0435\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>main<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let name = String::from(&quot;Alice&quot;);     let say_hi = || println!(&quot;Hello, {}&quot;, name);     call_fn(say_hi);     call_fn_mut(say_hi);     call_fn_once(say_hi); }<\/code><\/pre>\n<p>  <\/p>\n<p><code>name<\/code> \u0436\u0438\u0432\u0451\u0442 \u0434\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c <code>say_hi<\/code>, \u0438, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u0442 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 <code>name<\/code>. \u0422\u0430\u043a \u043a\u0430\u043a \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u0442\u0441\u044f, \u0442\u043e <code>say_hi<\/code> \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0442\u0440\u0435\u0439\u0442\u044b <code>Fn<\/code>, <code>FnMut<\/code> \u0438 <code>FnOnce<\/code>, \u0442\u043e \u043a\u043e\u0434 \u0432\u044b\u0448\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">\/\/ bad! fn main() {     let say_hi = {         let name = String::from(&quot;Alice&quot;);         || println!(&quot;Hello, {}&quot;, name)     }; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e, \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. <code>name<\/code> \u0435\u0434\u0438\u043d\u043e\u0436\u0434\u044b \u043f\u043e\u043a\u0438\u0434\u0430\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u044b \u043f\u043e\u043a\u0438\u0434\u0430\u0435\u043c \u0431\u043b\u043e\u043a \u0438\u0437 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043e\u043a. \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0430\u0448\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435, \u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u0441\u044b\u043b\u043a\u0430 \u0436\u0438\u0432\u0451\u0442 \u0434\u043e\u043b\u044c\u0448\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0442\u0440\u044e\u043a, \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c\u044b\u0439 \u0440\u0430\u043d\u0435\u0435, \u0447\u0442\u043e\u0431\u044b \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0445\u0432\u0430\u0442 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let say_hi = {         let name = String::from(&quot;Alice&quot;);         || {             let name = name;             println!(&quot;Hello, {}&quot;, name)         }     };      \/\/ call_fn(say_hi);     \/\/ call_fn_mut(say_hi);     call_fn_once(say_hi); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0435\u0439\u0442 <code>FnOnce<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f. \u041d\u043e \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u043b\u0443\u0447\u0448\u0435! \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>name<\/code> \u0432\u043e \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435, \u043d\u043e \u0432\u0441\u0451 \u0435\u0449\u0451 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0435\u0451 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 (\u043f\u043e\u043a\u0430 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u0433\u043d\u0430\u043b \u2014 \u043f\u0440\u0438\u043c):<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let say_hi = {         let name = String::from(&quot;Alice&quot;);         move || println!(&quot;Hello, {}&quot;, name)     };      call_fn(&amp;say_hi);     call_fn_mut(&amp;say_hi);     call_fn_once(&amp;say_hi); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0432\u0435\u0440\u043d\u0443\u043b\u0438\u0441\u044c \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 <code>Fn<\/code>, <code>FnMut<\/code> \u0438 <code>FnOnce<\/code>. \u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u0430\u043c\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>say_hi<\/code> \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u043e \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435, \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>call_fn<\/code> \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043d\u0435\u0433\u043e. \u042f \u0441\u0447\u0438\u0442\u0430\u044e (\u043d\u043e \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d \u043d\u0430 \u0432\u0441\u0435 \u0441\u0442\u043e), \u0447\u0442\u043e \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432 \u044d\u0442\u043e\u043c \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0431\u044b\u043b\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0441\u0440\u0435\u0434\u044b, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u043c\u043e\u0433\u043b\u043e \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043e. \u0410 \u0432\u043e\u0442 \u044d\u0442\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 (\u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u2014 \u043f\u0440\u0438\u043c.) \u0441 \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d\u043d\u044b\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c, \u0443\u0436\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043e.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let say_hi = {         let name = String::from(&quot;Alice&quot;);         || std::mem::drop(name)     };     \/\/call_fn(say_hi);     \/\/call_fn_mut(say_hi);     call_fn_once(say_hi); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>drop<\/code> \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u044c <code>name<\/code>. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0435\u0433\u043e \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u0438 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u043e \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435. \u041a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 <code>move<\/code> \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435\u043c \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c, \u043d\u043e \u0438 \u0432\u0440\u0435\u0434\u0430 \u043e\u0442 \u043d\u0435\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let mut say_hi = {         let mut name = String::from(&quot;Alice&quot;);         move || {             name += &quot; and Bob&quot;;             println!(&quot;Hello, {}&quot;, name);         }     };     \/\/call_fn(say_hi);     call_fn_mut(&amp;mut say_hi);     call_fn_once(&amp;mut say_hi); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <code>+=<\/code> \u0434\u043b\u044f \u0442\u0438\u043f\u0430 <code>String<\/code> \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u0443\u0445\u043e\u0434\u0438\u043c \u0441 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438 \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438. \u0420\u0430\u0441\u0442 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a \u0437\u0430\u0445\u0432\u0430\u0442\u0443 \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435. \u042d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>name<\/code> \u0431\u044b\u043b\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439. \u0418 \u0442\u0430\u043a \u043a\u0430\u043a <code>name<\/code> \u043f\u043e\u043a\u0438\u0434\u0430\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c (<code>move<\/code>) \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044e. \u0418 \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u044b\u0437\u043e\u0432 <code>say_hi<\/code> \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c <code>mut<\/code> \u043f\u0435\u0440\u0435\u0434 \u0438\u0445 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c <code>say_hi<\/code> \u0432 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>&amp;mut<\/code> \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b (1) \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u0442\u0441\u044f, \u0438 (2) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0433\u043b\u043e \u0431\u044b\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043e. \u0412\u044b\u0437\u043e\u0432 <code>call_fn<\/code> \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0442\u0440\u0435\u0439\u0442\u044b <code>FnMut<\/code> \u0438 <code>FnOnce<\/code>, \u043d\u043e <em>\u043d\u0435<\/em> \u0442\u0440\u0435\u0439\u0442 <code>Fn<\/code>.<\/p>\n<p>  <\/p>\n<p><strong>\u0427\u0435\u043b\u043b\u0435\u043d\u0434\u0436<\/strong> \u041a\u0430\u043a\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u043e\u0434 \u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b? \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 <code>&quot; and Bob&quot;<\/code> \u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>name<\/code>?<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let mut name = String::from(&quot;Alice&quot;);     let mut say_hi = || {         name += &quot; and Bob&quot;;         println!(&quot;Hello, {}&quot;, name);     };     \/\/call_fn(say_hi);     call_fn_mut(&amp;mut say_hi);     call_fn_once(&amp;mut say_hi); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>name<\/code> \u0431\u0443\u0434\u0435\u0442 \u0436\u0438\u0442\u044c \u0434\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0435\u0451 \u0437\u0430\u0445\u0432\u0430\u0442\u0430.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">\/\/ bad! fn main() {     let mut name = String::from(&quot;Alice&quot;);     let mut say_hi = || {         name += &quot; and Bob&quot;;         println!(&quot;Hello, {}&quot;, name);     };     \/\/call_fn(say_hi);     call_fn_mut(&amp;mut say_hi);     call_fn_once(&amp;mut say_hi);      println!(&quot;And now name is: {}&quot;, name); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 <code>say_hi<\/code> \u0435\u0449\u0451 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 <code>println!<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <code>name<\/code>, \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437-\u0437\u0430 <em>\u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u0440\u0435\u043c\u0451\u043d \u0436\u0438\u0437\u043d\u0438<\/em> (<em>lexical lifetimes<\/em>). \u041c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0443\u044e (\u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438) \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c &quot;\u043d\u0435\u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0436\u0438\u0437\u043d\u0438&quot; (non-lexical lifetimes), \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043a\u043e\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 <code>#![feature(nll)]<\/code>. \u0418\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u044f\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let mut name = String::from(&quot;Alice&quot;);     {         let mut say_hi = || {             name += &quot; and Bob&quot;;             println!(&quot;Hello, {}&quot;, name);         };         \/\/call_fn(say_hi);         call_fn_mut(&amp;mut say_hi);         call_fn_once(&amp;mut say_hi);     }      println!(&quot;And now name is: {}&quot;, name); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 (\u0447\u0442\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435) (\u0432 \u043e\u0434\u043d\u043e\u043c \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0438 \u2014 \u043f\u0440\u0438\u043c.):<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let mut name = String::from(&quot;Alice&quot;);     let mut say_hi = || {         println!(&quot;Hello, {}&quot;, name); \/\/ use by ref         name += &quot; and Bob&quot;; \/\/ use by mut ref         std::mem::drop(name); \/\/ use by value     };      \/\/call_fn(say_hi);     \/\/call_fn_mut(say_hi);     call_fn_oce(say_hi); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0441\u0430\u043c\u043e\u0435 \u0441\u0442\u0440\u043e\u0433\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0442\u043e, \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u043d\u0443\u0436\u043d\u043e \u0438 \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0435\u0451 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u0438 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043d\u0443\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0435\u0451 \u0432\u043e \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<h2 id=\"kakoy-treyt-ispolzovat\">\u041a\u0430\u043a\u043e\u0439 \u0442\u0440\u0435\u0439\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c?<\/h2>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u044f\u0437\u043d\u043e \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0434 \u0442\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u0442\u0440\u0451\u0445 \u0442\u0440\u0435\u0439\u0442\u043e\u0432 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d. \u041d\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u043f\u043e\u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0430\u0441. \u041f\u0440\u043e\u0446\u0438\u0442\u0438\u0440\u0443\u044e Rust Book:<\/p>\n<p>  <\/p>\n<blockquote><p>\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0434\u0438\u043d \u0438\u0437 <code>Fn<\/code>-\u0442\u0440\u0435\u0439\u0442\u043e\u0432, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 <code>Fn<\/code>, \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0442\u0435\u043b\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f, \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0435\u0442, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u044b \u0442\u0440\u0435\u0439\u0442\u044b <code>FnMut<\/code> \u0438\u043b\u0438 <code>FnOnce<\/code>.<\/p><\/blockquote>\n<p>\u042f \u0431\u044b \u0434\u0430\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u043e\u0432\u0435\u0442, \u0441\u043b\u0435\u0434\u0443\u044f \u0434\u043e\u043a\u0442\u0440\u0438\u043d\u0435 &quot;\u0431\u044b\u0442\u044c \u0441\u0434\u0435\u0440\u0436\u0430\u043d\u0435\u0435 \u043a \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0448\u044c&quot;. \u041f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0441\u0434\u0435\u0440\u0436\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441 \u0442\u0440\u0435\u0439\u0442\u0430 <code>FnOnce<\/code>. \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u0442\u043e \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0441\u043b\u0443\u0448\u0430\u0442\u044c\u0441\u044f \u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f\u0445 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0447\u0438\u0442\u0430\u0439\u0442\u0435 <a href=\"https:\/\/doc.rust-lang.org\/rust-by-example\/fn\/closures\/output_parameters.html\" rel=\"nofollow\">\u0433\u043b\u0430\u0432\u0443 Rust by Example<\/a>.<\/p>\n<p>  <\/p>\n<h2 id=\"itogi-pravila-tryoh-dlya-zamykaniy\">\u0418\u0442\u043e\u0433\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0442\u0440\u0451\u0445 \u0434\u043b\u044f \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0439<\/h2>\n<p>  <\/p>\n<p>\u0418 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u0430\u043d\u043d\u043e\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e\u043c \u0442\u0440\u0435\u0439\u0442\u043e\u0432 <code>Fn<\/code> \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0442\u0440\u0435\u0439\u0442\u044b. \u042d\u0442\u043e \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0442\u0438\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u0440\u0435\u0439\u0442 <code>Fn<\/code> \u0442\u0430\u043a \u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u0435\u0439\u0442\u043e\u043c <code>FnMut<\/code>, \u0430 <code>FnMut<\/code> \u0442\u0430\u043a \u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u0435\u0439\u0442\u043e\u043c <code>FnOnce<\/code>.<\/p>\n<p>  <\/p>\n<ul>\n<li><code>FnOnce<\/code> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e<\/li>\n<li><code>FnMut<\/code> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/li>\n<li><code>Fn<\/code> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e \u043d\u0435\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u043e, \u043a\u0430\u043a \u0432\u043d\u0443\u0442\u0440\u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u043e\u043c\u0443 \u0442\u0440\u0435\u0439\u0442\u0443 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442. \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0438 \u043e\u043d\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u0440\u0435\u0439\u0442\u0443 <code>Fn<\/code>.<\/p>\n<p>  <\/p>\n<h3 id=\"uprazhnenie-5\">\u0423\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435 5<\/h3>\n<p>  <\/p>\n<p>\u0421\u043b\u043e\u0436\u0438\u0432 \u0432\u043c\u0435\u0441\u0442\u0435 \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u044b \u0438\u0437\u0443\u0447\u0438\u043b\u0438 \u043f\u0440\u043e \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f, \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 5 (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 <code>for i in<\/code>) \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u043b\u0430 \u0447\u0438\u0441\u043b\u0430 <code>2,4,6,...,20<\/code> \u0434\u0432\u0430\u0436\u0434\u044b.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let nums: Vec&lt;u32&gt; = (1..11).collect();      for _ in 1..3 {         for i in nums.map(todo!()) {             println!(&quot;{}&quot;, i);         }     } }<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u041f\u0435\u0440\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">error[E0599]: no method named `map` found for type `std::vec::Vec&lt;u32&gt;` in the current scope  --&gt; main.rs:5:23   | 5 |         for i in nums.map(todo!()) {   |                       ^^^   |   = note: the method `map` exists but the following trait bounds were not satisfied:           `&amp;mut std::vec::Vec&lt;u32&gt; : std::iter::Iterator`           `&amp;mut [u32] : std::iter::Iterator`<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437 <code>nums<\/code> \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440. \u0423 \u043d\u0430\u0441 \u043d\u0430 \u0432\u044b\u0431\u043e\u0440 \u0442\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430: <code>into_iter()<\/code>, <code>iter()<\/code> \u0438 <code>iter_mut()<\/code>. \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437, \u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0451 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0442\u043e <code>iter()<\/code> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0435\u0440\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c. \u0417\u0430\u043c\u0435\u043d\u0438\u0432 <code>nums.map<\/code> \u043d\u0430 <code>nums.iter().map<\/code>, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u043a \u0437\u0430\u043c\u0435\u043d\u0435 <code>todo!()<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e. \u042d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e: <code>|x| x * 2<\/code>. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436: \u043a\u0430\u043a\u043e\u043c\u0443 \u0438\u0437 \u0442\u0440\u0435\u0439\u0442\u043e\u0432 <code>FnOnce<\/code>, <code>FnMut<\/code> \u0438\u043b\u0438 <code>Fn<\/code> \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442?<\/p>\n<\/div><\/div>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/537546\/\"> https:\/\/habr.com\/ru\/post\/537546\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<blockquote><p>\u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0447\u0430\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 Rust Crash Course \u043e\u0442 \u041c\u0430\u0439\u043a\u043b\u0430 \u0421\u043d\u043e\u0439\u043c\u0430\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435, \u0438 \u0441\u043e\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0441 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438 \u0436\u0438\u0437\u043d\u0438.<\/p>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0431\u043b\u0438\u0437\u043a\u043e \u043a \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u043c\u0443 \u0441\u0442\u0438\u043b\u044e, \u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0436\u0434\u043e\u043c\u0435\u0434\u0438\u0439 \u0438 \u0432\u043e\u0441\u043a\u043b\u0438\u0446\u0430\u043d\u0438\u0439, \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u0441\u043c\u044b\u0441\u043b\u0430.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-316420","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/316420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=316420"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/316420\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=316420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=316420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=316420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}