{"id":479308,"date":"2026-05-11T11:20:59","date_gmt":"2026-05-11T11:20:59","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=479308"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=479308","title":{"rendered":"\u041e\u0442 \u00abHello, World\u00bb \u0434\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0432 rustc: Roadmap Rust-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430 2026 \u0433\u043e\u0434"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>Rust \u0434\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0431\u044b\u0442\u044c \u044f\u0437\u044b\u043a\u043e\u043c \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u043e\u0432. \u041d\u0430 \u043d\u0451\u043c \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u043a\u0443\u0441\u043a\u0438 \u044f\u0434\u0440\u0430 Linux, \u0434\u0432\u0438\u0436\u043a\u0438 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 (TiKV, Materialize, Polars), \u0431\u044d\u043a\u0435\u043d\u0434\u044b Cloudflare \u0438 Discord. \u041f\u043e\u0434 Rust \u043f\u0438\u0448\u0443\u0442 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043b\u044f ESP32 \u0438 STM32, \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0447\u0435\u0440\u0435\u0437 WebAssembly, \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM.<\/p>\n<p>Microsoft \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u0438 Windows, AWS \u0441\u0442\u0440\u043e\u0438\u0442 \u043d\u0430 Rust <a href=\"https:\/\/firecracker-microvm.github.io\/\" rel=\"noopener noreferrer nofollow\">Firecracker<\/a> \u0438 Bottlerocket, Google \u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 Android \u0438 \u0432 \u0434\u0435\u0440\u0435\u0432\u043e \u044f\u0434\u0440\u0430. \u041f\u043e \u0437\u0430\u0440\u043f\u043b\u0430\u0442\u0430\u043c Rust \u043f\u044f\u0442\u044b\u0439 \u0433\u043e\u0434 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0434\u0435\u0446\u0438\u043b\u0435 <a href=\"https:\/\/survey.stackoverflow.co\" rel=\"noopener noreferrer nofollow\">Stack Overflow Survey<\/a>, \u0438 \u0441\u0435\u043c\u044c \u043b\u0435\u0442 \u043f\u043e\u0434\u0440\u044f\u0434 &#8212; \u0441\u0430\u043c\u044b\u0439 \u043b\u044e\u0431\u0438\u043c\u044b\u0439 \u044f\u0437\u044b\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<p>\u042f \u0432\u0435\u0434\u0443 <a href=\"https:\/\/github.com\/Develp10\/rust-roadmap-ru\" rel=\"noopener noreferrer nofollow\">github.com\/Develp10\/rust-roadmap-ru<\/a> &#8212; \u0436\u0438\u0432\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0443\u0447\u0438\u0442\u044c. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f &#8212; \u0435\u0451 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438, \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u0438 \u043b\u0438\u0447\u043d\u044b\u043c \u043e\u043f\u044b\u0442\u043e\u043c.<\/p>\n<h3>\u0427\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438<\/h3>\n<ul>\n<li>\n<p><a href=\"#%D0%BA%D0%B0%D1%80%D1%82%D0%B0-%D0%BF%D0%BE-%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F%D0%BC\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u0440\u0442\u0430 \u043f\u043e \u0443\u0440\u043e\u0432\u043d\u044f\u043c<\/a> \u0438 <a href=\"#%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0-%D0%B1%D1%80%D0%B0%D1%82%D1%8C-rust-%D0%B0-%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0-%D0%BD%D0%B5%D1%82\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u0433\u0434\u0430 \u0431\u0440\u0430\u0442\u044c Rust<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9-%D1%81%D1%82%D0%B0%D1%80%D1%82-%D0%BF%D0%B5%D1%80%D0%B2%D1%8B%D0%B9-%D0%BC%D0%B5%D1%81%D1%8F%D1%86\" rel=\"noopener noreferrer nofollow\">\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u0435\u0441\u044f\u0446<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D1%8D%D1%82%D0%B0%D0%BF-0-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D0%BE%D0%BA%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F---%D1%84%D1%83%D0%BD%D0%B4%D0%B0%D0%BC%D0%B5%D0%BD%D1%82-%D0%B1%D0%B5%D0%B7-%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D0%BE%D0%B3%D0%BE-%D0%B2%D1%81%D1%91-%D1%81%D1%8B%D0%BF%D0%B5%D1%82%D1%81%D1%8F\" rel=\"noopener noreferrer nofollow\">12 \u044d\u0442\u0430\u043f\u043e\u0432 roadmap\u2019\u0430<\/a> \u043e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u0440\u043e\u0444\u0438<\/p>\n<\/li>\n<li>\n<p><a href=\"#%D1%87%D0%B0%D1%81%D1%82%D1%8B%D0%B5-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%BE%D0%B2\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432<\/a> \u0438 <a href=\"#%D1%81%D0%BB%D0%B0%D0%B1%D1%8B%D0%B5-%D0%BC%D0%B5%D1%81%D1%82%D0%B0-rust-%D0%BE-%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85-%D1%80%D0%B5%D0%B4%D0%BA%D0%BE-%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D1%8F%D1%82\" rel=\"noopener noreferrer nofollow\">\u0441\u043b\u0430\u0431\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 Rust<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%B4%D0%BE-%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D1%82%D0%B0-%D0%B2-rustc\" rel=\"noopener noreferrer nofollow\">\u0414\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0432 rustc<\/a>: \u043f\u0443\u0442\u044c \u0434\u043e \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430<\/p>\n<\/li>\n<li>\n<p><a href=\"#crate-%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%8B-%D0%BF%D1%80%D0%B8%D0%B2%D1%8B%D1%87%D0%BD%D1%8B%D1%85-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2\" rel=\"noopener noreferrer nofollow\">Crate-\u0437\u0430\u043c\u0435\u043d\u044b \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/a> \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0441 Python\/Node\/Go<\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%B4%D0%B5%D0%BD%D1%8C%D0%B3%D0%B8-%D0%B2%D0%B8%D0%BB%D0%BA%D0%B8-%D0%B7%D0%B0%D1%80%D0%BF%D0%BB%D0%B0%D1%82-%D0%B8-%D1%80%D1%8B%D0%BD%D0%BE%D0%BA\" rel=\"noopener noreferrer nofollow\">\u0414\u0435\u043d\u044c\u0433\u0438<\/a>, <a href=\"#%D0%B1%D1%83%D0%B4%D0%BD%D0%B8-rust-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0\" rel=\"noopener noreferrer nofollow\">\u0431\u0443\u0434\u043d\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<\/a> \u0438 <a href=\"#%D0%BA%D0%B0%D0%BA-%D0%B8%D1%81%D0%BA%D0%B0%D1%82%D1%8C-%D0%BF%D0%B5%D1%80%D0%B2%D1%83%D1%8E-rust-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%83\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u043a \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%B0%D0%BD%D1%82%D0%B8-faq\" rel=\"noopener noreferrer nofollow\">\u0410\u043d\u0442\u0438-FAQ<\/a>, <a href=\"#%D0%BA%D0%B0%D0%BA-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D1%8B-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%B2%D1%8C%D1%8E-%D0%BD%D0%B0-rust-%D0%B2-2026\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e<\/a>, <a href=\"#%D1%87%D1%82%D0%BE-%D0%BF%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-%D0%B8-%D0%BF%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B5%D1%82%D1%8C\" rel=\"noopener noreferrer nofollow\">\u043a\u043d\u0438\u0433\u0438 \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D1%87%D0%B5%D0%BA-%D0%BB%D0%B8%D1%81%D1%82-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%B2-%D0%B4%D0%BB%D1%8F-%D0%BF%D0%BE%D1%80%D1%82%D1%84%D0%BE%D0%BB%D0%B8%D0%BE\" rel=\"noopener noreferrer nofollow\">\u0427\u0435\u043a-\u043b\u0438\u0441\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432<\/a> \u0438 <a href=\"#%D0%BA%D1%83%D0%B4%D0%B0-%D0%B8%D0%B4%D1%82%D0%B8-%D0%BF%D1%80%D1%8F%D0%BC%D0%BE-%D1%81%D0%B5%D0%B9%D1%87%D0%B0%D1%81\" rel=\"noopener noreferrer nofollow\">\u043a\u0443\u0434\u0430 \u0438\u0434\u0442\u0438 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441<\/a><\/p>\n<\/li>\n<\/ul>\n<h3>\u041a\u0430\u0440\u0442\u0430 \u043f\u043e \u0443\u0440\u043e\u0432\u043d\u044f\u043c<\/h3>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0423\u0440\u043e\u0432\u0435\u043d\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u0443\u043c\u0435\u0435\u0448\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041d\u043e\u0432\u0438\u0447\u043e\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, ownership \u043d\u0430 \u0438\u043d\u0442\u0443\u0438\u0446\u0438\u0438, \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">1-3 \u043c\u0435\u0441\u044f\u0446\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0423\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">Generics, traits, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a, \u0442\u0435\u0441\u0442\u044b, async \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 axum\/tokio<\/p>\n<\/td>\n<td>\n<p align=\"left\">6-12 \u043c\u0435\u0441\u044f\u0446\u0435\u0432<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Middle<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0432\u043e\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043a\u0430 \u0431\u0435\u0437 \u0431\u0430\u0433\u043e\u0432, \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 lifetimes, \u0447\u0443\u0436\u043e\u0439 \u043a\u043e\u0434 \u0447\u0438\u0442\u0430\u0435\u0448\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">1-2 \u0433\u043e\u0434\u0430 \u0441 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, 2-3 \u0433\u043e\u0434\u0430 \u043d\u0430 \u0441\u0430\u043c\u043e\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Senior<\/p>\n<\/td>\n<td>\n<p align=\"left\">Unsafe \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e, FFI, \u043c\u0430\u043a\u0440\u043e\u0441\u044b, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0434 \u043a\u0435\u0448, debugging async-\u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">2-4 \u0433\u043e\u0434\u0430 \u0432 production, \u0443 \u0441\u0430\u043c\u043e\u0443\u0447\u0435\u043a 4+<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0444\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u044b \u0432 tokio\/serde\/rustc, \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0448\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 borrow checker, \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 MIR<\/p>\n<\/td>\n<td>\n<p align=\"left\">5+ \u043b\u0435\u0442, \u0438 \u043d\u0435 \u0443 \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0426\u0438\u0444\u0440\u044b \u0441\u043f\u0440\u0430\u0432\u0430 &#8212; \u043c\u0435\u0434\u0438\u0430\u043d\u0430 \u043f\u043e \u043c\u043e\u0438\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u0438 \u043e\u043f\u0440\u043e\u0441\u0430\u043c \u0432 \u0447\u0430\u0442\u0430\u0445, \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f. \u041a\u0442\u043e-\u0442\u043e \u0441 \u0441\u0438\u043b\u044c\u043d\u044b\u043c C+\u00b1\u0431\u044d\u043a\u0433\u0440\u0430\u0443\u043d\u0434\u043e\u043c \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u0443\u0442\u044c \u0434\u043e Middle \u0437\u0430 8 \u043c\u0435\u0441\u044f\u0446\u0435\u0432, \u043a\u0442\u043e-\u0442\u043e \u0437\u0430\u0441\u0442\u0440\u0435\u0432\u0430\u0435\u0442 \u043d\u0430 ownership \u043d\u0430 \u0433\u043e\u0434 &#8212; \u0438 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e.<\/p>\n<h4>\u041a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u043a\u0430\u0440\u0442\u043e\u0439<\/h4>\n<p>\u0422\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430:<\/p>\n<ul>\n<li>\n<p><strong>\u041d\u0435 \u0442\u043e\u0440\u043e\u043f\u0438\u0441\u044c.<\/strong> \u042d\u0442\u0430\u043f\u044b 2, 7 \u0438 9 &#8212; \u043f\u0435\u0440\u0435\u043b\u043e\u043c\u043d\u044b\u0435. \u0411\u0435\u0437 \u043d\u0438\u0445 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043b\u044f\u0433\u0443\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0435\u0440\u0435\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f.<\/strong> \u0415\u0441\u043b\u0438 \u0447\u0438\u0442\u0430\u043b \u043f\u0440\u043e async \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0441 ownership &#8212; \u043f\u043e\u0447\u0442\u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432\u0435\u0440\u043d\u0451\u0448\u044c\u0441\u044f \u043d\u0430\u0437\u0430\u0434. \u042d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0441\u043e\u0432\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0432\u044b\u0443\u0447\u0438\u043b \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0446\u0435\u043d\u043e\u0439.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0447\u0435\u0441\u0442\u043d\u044b\u0435.<\/strong> \u0415\u0441\u043b\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0448\u044c \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 &#8212; \u044d\u0442\u0430\u043f \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u043d, \u043a\u0430\u043a \u0431\u044b \u043d\u0438 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0427\u0442\u043e Rust \u0440\u0435\u0448\u0430\u0435\u0442<\/h3>\n<p>\u041e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u043c\u0435\u0441\u0442\u043e \u043b\u0435\u043a\u0446\u0438\u0438. \u0412\u043e\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043d\u0430 C++:<\/p>\n<pre><code class=\"cpp\">std::vector&lt;int&gt; v = {1, 2, 3};int&amp; r = v[0];v.push_back(4);   \/\/ \u0432\u0435\u043a\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044cstd::cout &lt;&lt; r;   \/\/ r \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0438\u0441\u044f\u0447\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430, UB<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043d\u0430 Rust \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0435\u0449\u0451 \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430:<\/p>\n<pre><code class=\"rust\">let mut v = vec![1, 2, 3];let r = &amp;v[0];v.push(4);        \/\/ \u043e\u0448\u0438\u0431\u043a\u0430: cannot borrow `v` as mutable because it is also borrowed as immutableprintln!(\"{}\", r);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0434\u0430\u0436\u0430 Rust \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u0430\u0439\u0434\u0435: \u0446\u0435\u043b\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0431\u0430\u0433\u043e\u0432, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 C\/C++ \u0443\u0445\u043e\u0434\u044f\u0442 \u0434\u043d\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f CVE, \u0432 Rust \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0448\u0438\u0431\u043a\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041d\u0435 \u00ab\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0432\u043e\u043e\u0431\u0449\u0435\u00bb, \u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 data races \u0438 use-after-free \u0431\u0435\u0437 GC.<\/p>\n<blockquote>\n<p>Borrow checker \u043d\u0435 \u0443\u0447\u0438\u0442 \u043f\u0438\u0441\u0430\u0442\u044c Rust. \u041e\u043d \u0443\u0447\u0438\u0442 \u0434\u0443\u043c\u0430\u0442\u044c \u043e \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0438 \u044d\u0442\u0430 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u044b \u0432\u043e\u0437\u044c\u043c\u0451\u0448\u044c \u043f\u043e\u0442\u043e\u043c.<\/p>\n<\/blockquote>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c &#8212; \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. Zero-cost abstractions \u0437\u043d\u0430\u0447\u0430\u0442, \u0447\u0442\u043e \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b, traits \u0438 async \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u043a\u0430\u043a \u0440\u0443\u0447\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u043d\u0430 C. \u0422\u0440\u0435\u0442\u0438\u0439 &#8212; \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043a\u0430. \u0421\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0430\u0440\u0435\u043d\u0434\u0430 \u0434\u043e\u0440\u043e\u0433\u0430\u044f, \u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442, \u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043c\u0438\u0433\u0440\u0438\u0440\u0443\u044e\u0442 \u0433\u043e\u0440\u044f\u0447\u0438\u0435 \u043f\u0443\u0442\u0438 \u0441 Python \u0438 Java \u043d\u0430 Rust \u0440\u0430\u0434\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u043a\u0430 \u043c\u0430\u0448\u0438\u043d \u0432 \u0440\u0430\u0437\u044b.<\/p>\n<p>\u042d\u0442\u043e \u043d\u0435 \u0442\u0435\u043e\u0440\u0438\u044f: <a href=\"https:\/\/discord.com\/blog\/why-discord-is-switching-from-go-to-rust\" rel=\"noopener noreferrer nofollow\">Discord \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b Read States \u0441 Go \u043d\u0430 Rust<\/a> \u0438 \u0443\u0431\u0440\u0430\u043b \u043f\u0438\u043a\u0438 GC, <a href=\"https:\/\/blog.cloudflare.com\/pingora-open-source\/\" rel=\"noopener noreferrer nofollow\">Cloudflare \u043d\u0430 Rust \u043f\u0438\u0448\u0435\u0442 Pingora<\/a> &#8212; \u043f\u0440\u043e\u043a\u0441\u0438, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0434\u0451\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043c\u0438\u0440\u043e\u0432\u043e\u0433\u043e HTTP-\u0442\u0440\u0430\u0444\u0438\u043a\u0430. \u042d\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h3>\u041a\u043e\u0433\u0434\u0430 \u0431\u0440\u0430\u0442\u044c Rust, \u0430 \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442<\/h3>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0447\u0435\u0441\u0442\u043d\u043e\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u043e\u0432\u0438\u0447\u043a\u0443: Rust &#8212; \u043d\u0435 \u043b\u0443\u0447\u0448\u0438\u0439 \u0432\u044b\u0431\u043e\u0440 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0437\u0430\u0434\u0430\u0447. \u041e\u043d \u043b\u0443\u0447\u0448\u0438\u0439 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447, \u0433\u0434\u0435 \u0446\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u044b\u0441\u043e\u043a\u0430, \u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0417\u0430\u0434\u0430\u0447\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0411\u0440\u0430\u0442\u044c Rust?<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0435\u043c \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u044b\u0441\u043e\u043a\u043e\u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">Go (\u043f\u0440\u043e\u0449\u0435 \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b), Java\/Kotlin (\u0435\u0441\u0442\u044c \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0438\u0437\u0430)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u043a\u0440\u0438\u043f\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, ETL \u043d\u0430 \u0434\u0435\u043d\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">Python, Bash<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">C (\u0435\u0441\u043b\u0438 \u0436\u0451\u0441\u0442\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a toolchain)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0435\u0431-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 WASM \u0434\u043b\u044f \u0442\u044f\u0436\u0451\u043b\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">TypeScript<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0442\u043e\u0442\u0438\u043f ML-\u043c\u043e\u0434\u0435\u043b\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">Python + PyTorch<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0418\u043d\u0444\u0435\u0440\u0435\u043d\u0441 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u0430, \u0435\u0441\u043b\u0438 \u0432\u0430\u0436\u043d\u0430 \u043b\u0430\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">C++, ONNX Runtime<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">CLI-\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">Go<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0414\u0435\u0441\u043a\u0442\u043e\u043f-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u0430, \u0447\u0435\u0440\u0435\u0437 Tauri, \u0435\u0441\u043b\u0438 \u0432\u0430\u0436\u0435\u043d \u0440\u0430\u0437\u043c\u0435\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">Electron, Qt, Flutter<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0418\u0433\u0440\u043e\u0432\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0417\u0440\u0435\u043b\u044b\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0432\u0430\u0436\u043d\u0435\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">C++ (Unreal), C# (Unity), Godot<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">CRUD \u0441 \u0434\u0435\u0434\u043b\u0430\u0439\u043d\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0434\u0435\u043b\u044e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0442\u043e, \u0447\u0442\u043e \u0437\u043d\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0430\u0440\u0441\u0435\u0440 \u0441 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f\u043c\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">OCaml, Haskell<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">Go, C<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">Java, C++ (\u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c compliance)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u0442\u0432\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 Rust \u00ab\u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u00bb &#8212; \u0431\u0435\u0440\u0438 \u0442\u043e, \u0447\u0442\u043e \u0437\u043d\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430. Rust \u043e\u043a\u0443\u043f\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0435 \u043f\u043e\u043b\u0443\u0433\u043e\u0434\u0430 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<h3>\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442: \u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u0435\u0441\u044f\u0446<\/h3>\n<p>\u041d\u0435 \u043f\u044b\u0442\u0430\u0439\u0441\u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/doc.rust-lang.org\/book\/\" rel=\"noopener noreferrer nofollow\">The Rust Book<\/a> \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e <a href=\"https:\/\/github.com\/rust-lang\/rustlings\" rel=\"noopener noreferrer nofollow\">Rustlings<\/a> \u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043a\u0443\u0440\u0441\u044b. \u042d\u0442\u043e \u0440\u0435\u0446\u0435\u043f\u0442 \u0432\u044b\u0433\u043e\u0440\u0430\u043d\u0438\u044f. \u041b\u0443\u0447\u0448\u0435 \u0442\u0430\u043a:<\/p>\n<ul>\n<li>\n<p>\u043d\u0435\u0434\u0435\u043b\u044f 1: \u0433\u043b\u0430\u0432\u044b 1-6 The Rust Book + \u043f\u0435\u0440\u0432\u044b\u0435 30 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0439 Rustlings;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u0434\u0435\u043b\u044f 2: \u0433\u043b\u0430\u0432\u044b 7-10 + \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c CLI-\u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u043d\u0430 200 \u0441\u0442\u0440\u043e\u043a (\u0433\u0440\u0430\u0431\u0435\u0440 RSS \u0438\u043b\u0438 \u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u0441\u0442\u0440\u043e\u043a \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438);<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u0434\u0435\u043b\u044f 3: \u0433\u043b\u0430\u0432\u044b 11-13 + \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0441\u0432\u043e\u044e \u0441\u0442\u0430\u0440\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u0441 Python\/Go \u043d\u0430 Rust \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u0434\u0435\u043b\u044f 4: \u0433\u043b\u0430\u0432\u044b 14-17 + \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u00ab\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439\u00bb \u043f\u0440\u043e\u0435\u043a\u0442 (\u0441\u043c. \u0447\u0435\u043a-\u043b\u0438\u0441\u0442 \u0432 \u043a\u043e\u043d\u0446\u0435).<\/p>\n<\/li>\n<\/ul>\n<p>\u041a \u043a\u043e\u043d\u0446\u0443 \u043c\u0435\u0441\u044f\u0446\u0430 \u0443 \u0442\u0435\u0431\u044f \u0432 \u043f\u043e\u0440\u0442\u0444\u043e\u043b\u0438\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0441\u0442\u044b\u0434\u043d\u043e \u0434\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443. \u0411\u0435\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Rust \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u043d\u0435 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u044f\u0435\u0442\u0441\u044f, \u0438 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043b\u043e\u0436\u043d\u043e\u0435 \u0447\u0443\u0432\u0441\u0442\u0432\u043e \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h3>\u0427\u0430\u0441\u0442\u044c 1. Roadmap \u043f\u043e \u044d\u0442\u0430\u043f\u0430\u043c<\/h3>\n<p>\u042d\u0442\u0430\u043f\u044b 0-2 &#8212; \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442 \u044f\u0437\u044b\u043a\u0430. \u042d\u0442\u0430\u043f\u044b 3-6 &#8212; \u044f\u0437\u044b\u043a \u0432 production. \u042d\u0442\u0430\u043f\u044b 7-9 &#8212; \u0433\u043b\u0443\u0431\u0438\u043d\u0430. \u042d\u0442\u0430\u043f\u044b 10-11 &#8212; \u0432\u044b\u0445\u043e\u0434 \u0432 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u044e.<\/p>\n<h3>\u042d\u0442\u0430\u043f 0. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f &#8212; \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0441\u0451 \u0441\u044b\u043f\u0435\u0442\u0441\u044f<\/h3>\n<h4>\u0427\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u043c<\/h4>\n<ul>\n<li>\n<p><a href=\"https:\/\/rustup.rs\/\" rel=\"noopener noreferrer nofollow\">rustup<\/a> &#8212; \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u043e\u0432. \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u0442\u0430\u0432\u044c rustc \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440;<\/p>\n<\/li>\n<li>\n<p>VS Code + <a href=\"https:\/\/rust-analyzer.github.io\/\" rel=\"noopener noreferrer nofollow\">rust-analyzer<\/a> \u0438\u043b\u0438 RustRover \u043e\u0442 JetBrains. rust-analyzer \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0438 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0443\u0441\u0442\u0443\u043f\u0430\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/killercup\/cargo-edit\" rel=\"noopener noreferrer nofollow\">cargo-edit<\/a>, <a href=\"https:\/\/github.com\/watchexec\/cargo-watch\" rel=\"noopener noreferrer nofollow\">cargo-watch<\/a>, <a href=\"https:\/\/github.com\/Canop\/bacon\" rel=\"noopener noreferrer nofollow\">bacon<\/a> \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>nightly-\u043a\u0430\u043d\u0430\u043b \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432: <code>rustup toolchain install nightly<\/code>.<\/p>\n<\/li>\n<\/ul>\n<h4>\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h4>\n<p>\u0421\u043e\u0437\u0434\u0430\u0439 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438 \u0441\u0435\u0431\u0435 <code>.cargo\/config.toml<\/code> \u0441 \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u043b\u0438\u043d\u043a\u0435\u0440\u043e\u043c \u0438 \u0448\u0430\u0431\u043b\u043e\u043d <code>Cargo.toml<\/code> \u0441 \u0442\u0432\u043e\u0438\u043c\u0438 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438:<\/p>\n<pre><code># .cargo\/config.toml[target.x86_64-unknown-linux-gnu]linker = \"clang\"rustflags = [\"-C\", \"link-arg=-fuse-ld=mold\"][alias]b = \"build\"c = \"check\"t = \"test\"r = \"run\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>\u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u0432\u0441\u0451<\/h4>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u00ab\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0445\u00bb \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0443 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 &#8212; \u043d\u0435 Rust, \u0430 \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0439 rustup, \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 toolchain\u2019\u043e\u0432 \u0438\u043b\u0438 \u0441\u0442\u0430\u0440\u044b\u0439 rust-analyzer. \u041e\u0434\u0438\u043d \u0434\u0435\u043d\u044c \u043d\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043c\u0435\u0441\u044f\u0446 \u043c\u0443\u0447\u0435\u043d\u0438\u0439.<\/p>\n<h3>\u042d\u0442\u0430\u043f 1. \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 &#8212; \u043f\u0440\u0438\u0432\u044b\u043a\u0430\u0435\u0448\u044c \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u044f\u0437\u044b\u043a\u0443<\/h3>\n<h4>\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0442\u0438\u043f\u044b, control flow, \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 (<code>Vec<\/code>, <code>String<\/code>, <code>HashMap<\/code>), \u043c\u043e\u0434\u0443\u043b\u0438. \u042d\u0442\u043e 1-2 \u043d\u0435\u0434\u0435\u043b\u0438 \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u0442 \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u0438 3-4 \u043d\u0435\u0434\u0435\u043b\u0438 \u0434\u043b\u044f \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0445 \u0438\u0437 Python\/JS.<\/p>\n<h4>\u0413\u0434\u0435 \u043b\u043e\u043c\u0430\u044e\u0442\u0441\u044f<\/h4>\n<p>\u041d\u0430 <code>String<\/code> vs <code>&amp;str<\/code>. \u042d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0442\u0438\u043f\u043e\u0432 Rust: \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u00ab\u0441\u0442\u0440\u043e\u043a\u0430\u00bb \u0438\u043c\u0435\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u0432\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430. \u041d\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0439 \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0435\u043d\u0438\u0435 &#8212; \u044d\u0442\u043e \u043b\u0443\u0447\u0448\u0430\u044f \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 ownership.<\/p>\n<h4>\u041f\u0435\u0440\u0432\u044b\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c<\/h4>\n<pre><code class=\"rust\">fn greet(name: &amp;str) -&gt; String {    format!(\"\u041f\u0440\u0438\u0432\u0435\u0442, {}!\", name)}fn main() {    let name = String::from(\"\u043c\u0438\u0440\");    println!(\"{}\", greet(&amp;name));    \/\/ name \u0432\u0441\u0451 \u0435\u0449\u0451 \u0432\u0430\u043b\u0438\u0434\u0435\u043d - \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0443, \u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0442\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <code>&amp;name<\/code> \u0438 \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u044b, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e <code>name<\/code> &#8212; \u044d\u0442\u0430\u043f 1 \u043f\u0440\u043e\u0439\u0434\u0435\u043d.<\/p>\n<h4>\u041f\u0440\u043e\u0435\u043a\u0442 \u044d\u0442\u0430\u043f\u0430<\/h4>\n<p>CLI-\u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u0438\u043b\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 \u0435\u0434\u0438\u043d\u0438\u0446. 100-200 \u0441\u0442\u0440\u043e\u043a, \u0431\u0435\u0437 external crates.<\/p>\n<h3>\u042d\u0442\u0430\u043f 2. \u0412\u043b\u0430\u0434\u0435\u043d\u0438\u0435, \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435, \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0436\u0438\u0437\u043d\u0438 &#8212; \u0437\u0434\u0435\u0441\u044c \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e<\/h3>\n<h4>\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044c<\/h4>\n<p>Ownership, borrowing, <code>&amp;T<\/code> vs <code>&amp;mut T<\/code>, lifetimes, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, <code>Copy<\/code> vs <code>Clone<\/code>. \u0413\u043b\u0430\u0432\u044b 4 \u0438 10 The Rust Book + \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u0440\u043e lifetimes \u0432 <a href=\"https:\/\/doc.rust-lang.org\/rust-by-example\/\" rel=\"noopener noreferrer nofollow\">Rust by Example<\/a>.<\/p>\n<h4>\u0413\u0434\u0435 \u043b\u043e\u043c\u0430\u044e\u0442\u0441\u044f<\/h4>\n<p>\u042d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0438 \u0441\u0430\u043c\u0430\u044f \u0432\u0430\u0436\u043d\u0430\u044f \u0433\u043b\u0430\u0432\u0430 Rust. \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u043c\u0435\u043d\u0442: \u00ab\u044f \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u043f\u043e\u0447\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0440\u0443\u0433\u0430\u0435\u0442\u0441\u044f, \u0438 \u044f \u0443\u0441\u0442\u0430\u043b\u00bb. \u042d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 &#8212; \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0441 borrow checker\u2019\u043e\u043c, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f <code>.clone()<\/code> \u0432\u0435\u0437\u0434\u0435. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e Rust \u0442\u0435\u0440\u044f\u0435\u0442 \u0441\u043c\u044b\u0441\u043b. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h4>\u041f\u0440\u043e\u0435\u043a\u0442 \u044d\u0442\u0430\u043f\u0430<\/h4>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0439 \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0439 <code>Vec&lt;T&gt;<\/code> \u0438\u043b\u0438 \u043e\u0434\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a. \u042d\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u0435\u0441\u0442: \u0435\u0441\u043b\u0438 \u0442\u044b \u043c\u043e\u0436\u0435\u0448\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0430 Rust \u0431\u0435\u0437 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a &#8212; \u043f\u0435\u0440\u0432\u044b\u0439 \u0431\u0430\u0440\u044c\u0435\u0440 \u043f\u0440\u043e\u0439\u0434\u0435\u043d. \u0423 Aria Beingessner \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f <a href=\"https:\/\/rust-unofficial.github.io\/too-many-lists\/\" rel=\"noopener noreferrer nofollow\">\u00abLearn Rust With Entirely Too Many Linked Lists\u00bb<\/a> &#8212; \u043f\u0440\u043e\u0445\u043e\u0434\u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h4>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u0430\u043f\u0430 2<\/h4>\n<p>\u041e\u0431\u044a\u044f\u0441\u043d\u0438, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438 \u0442\u0440\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u043e\u0447\u0438\u043d\u043a\u0438:<\/p>\n<pre><code class=\"rust\">fn main() {    let mut s = String::from(\"hello\");    let r1 = &amp;s;    let r2 = &amp;mut s;    println!(\"{}, {}\", r1, r2);}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041c\u043e\u0436\u0435\u0448\u044c &#8212; \u0434\u0432\u0438\u0433\u0430\u0439\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435. \u041d\u0435\u0442 &#8212; \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0439\u0441\u044f \u043a \u0433\u043b\u0430\u0432\u0435 4 The Rust Book. \u0412 \u0441\u043f\u0435\u0448\u043a\u0435 \u044d\u0442\u043e\u0442 \u044d\u0442\u0430\u043f \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u0441\u044f.<\/p>\n<h3>\u042d\u0442\u0430\u043f 3. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 &#8212; \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0448\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440<\/h3>\n<h4>\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044c<\/h4>\n<p><code>struct<\/code>, <code>enum<\/code>, <code>impl<\/code>, \u043c\u0435\u0442\u043e\u0434\u044b, \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, traits, generics, trait bounds. The Rust Book \u0433\u043b\u0430\u0432\u044b 5, 10. \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e: <a href=\"https:\/\/rust-lang.github.io\/api-guidelines\/\" rel=\"noopener noreferrer nofollow\">Rust API Guidelines<\/a> &#8212; \u043a\u0430\u043a \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 API.<\/p>\n<h4>Generic-\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441 trait bounds<\/h4>\n<pre><code class=\"rust\">use std::fmt::Display;fn longest&lt;'a, T: Display&gt;(items: &amp;'a [T]) -&gt; Option&lt;&amp;'a T&gt; {    items.iter().max_by_key(|item| item.to_string().len())}fn main() {    let words = vec![\"\u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435\", \"\u0434\u043b\u0438\u043d\u043d\u043e\u0432\u0430\u0442\u043e\u0435\", \"\u0441\u0440\u0435\u0434\u043d\u0435\u0435\"];    if let Some(w) = longest(&amp;words) {        println!(\"\u0441\u0430\u043c\u043e\u0435 \u0434\u043b\u0438\u043d\u043d\u043e\u0435: {}\", w);    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c <code>T: Display<\/code> &#8212; trait bound, <code>'a<\/code> &#8212; lifetime, \u0438 \u043e\u0431\u0435 \u0432\u0435\u0449\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043a \u043a\u043e\u043d\u0446\u0443 \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430.<\/p>\n<h4>\u0413\u0434\u0435 \u043b\u043e\u043c\u0430\u044e\u0442\u0441\u044f<\/h4>\n<p>\u041d\u0430 trait bounds \u0441\u043b\u043e\u0436\u043d\u0435\u0435 <code>T: Clone + Send<\/code>. \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b, blanket impls, where-clauses &#8212; \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u043d\u0430\u043c\u0451\u043a \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0412 production-\u043a\u043e\u0434\u0435 \u0442\u0430\u043a\u043e\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0434\u043a\u043e.<\/p>\n<h4>\u041f\u0440\u043e\u0435\u043a\u0442 \u044d\u0442\u0430\u043f\u0430<\/h4>\n<p>\u041c\u0438\u043d\u0438-ORM-like \u0431\u0438\u043b\u0434\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438\u043b\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 (JSON \u2194 TOML \u2194 YAML) \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 trait-\u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f\u043c\u0438.<\/p>\n<h3>\u042d\u0442\u0430\u043f 4. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 &#8212; \u0434\u0435\u043b\u0430\u0435\u0448\u044c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0441\u0442\u044b\u0434\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c<\/h3>\n<h4>\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044c<\/h4>\n<p><code>Result&lt;T, E&gt;<\/code>, <code>Option&lt;T&gt;<\/code>, \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>?<\/code>, <code>thiserror<\/code> \u0434\u043b\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, <code>anyhow<\/code> \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, <code>#[test]<\/code>, <code>cargo test<\/code>, <a href=\"https:\/\/github.com\/proptest-rs\/proptest\" rel=\"noopener noreferrer nofollow\">proptest<\/a> \u0438 <a href=\"https:\/\/github.com\/mitsuhiko\/insta\" rel=\"noopener noreferrer nofollow\">insta<\/a> \u0434\u043b\u044f \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u0440\u0430\u0437\u0431\u043e\u0440: <a href=\"https:\/\/blog.burntsushi.net\/rust-error-handling\/\" rel=\"noopener noreferrer nofollow\">Error Handling in Rust by BurntSushi<\/a>.<\/p>\n<h4>\u0422\u0440\u0438 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438<\/h4>\n<pre><code class=\"rust\">\/\/ 1. \u0414\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432: Box&lt;dyn Error&gt; - \u0431\u044b\u0441\u0442\u0440\u043e, \u043d\u043e \u0431\u0435\u0437 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438fn quick(path: &amp;str) -&gt; Result&lt;String, Box&lt;dyn std::error::Error&gt;&gt; {    Ok(std::fs::read_to_string(path)?)}\/\/ 2. \u0414\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439: anyhow - \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u0431\u0435\u0437 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0448\u0438\u0431\u043e\u043afn app(path: &amp;str) -&gt; anyhow::Result&lt;String&gt; {    use anyhow::Context;    std::fs::read_to_string(path)        .with_context(|| format!(\"\u043d\u0435 \u0441\u043c\u043e\u0433 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c {}\", path))}\/\/ 3. \u0414\u043b\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a: thiserror - \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0435\u0439#[derive(thiserror::Error, Debug)]pub enum ConfigError {    #[error(\"\u0444\u0430\u0439\u043b {0} \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\")]    NotFound(String),    #[error(\"\u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 TOML: {0}\")]    Parse(#[from] toml::de::Error),}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>\u041b\u0438\u0447\u043d\u043e\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435<\/h4>\n<p>\u0412 \u043f\u0435\u0440\u0432\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0432\u0441\u0435 \u0441\u0443\u044e\u0442 <code>anyhow<\/code> \u0432\u0435\u0437\u0434\u0435 &#8212; <code>?<\/code> \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438, \u0438 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u0442. \u041d\u043e \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0448\u0435\u0448\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u0435 &#8212; \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438 \u043d\u0430 <code>thiserror<\/code>. \u0422\u0432\u043e\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438, \u043d\u0435 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u043c\u0438.<\/p>\n<h4>\u041f\u0440\u043e\u0435\u043a\u0442 \u044d\u0442\u0430\u043f\u0430<\/h4>\n<p>\u0412\u043e\u0437\u044c\u043c\u0438 CLI-\u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u0441 \u044d\u0442\u0430\u043f\u0430 2 \u0438 \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u0439: \u0434\u043e\u0431\u0430\u0432\u044c \u0441\u0432\u043e\u0438 error-\u0442\u0438\u043f\u044b \u0447\u0435\u0440\u0435\u0437 <code>thiserror<\/code>, unit-\u0442\u0435\u0441\u0442\u044b, integration-\u0442\u0435\u0441\u0442\u044b, property-based \u0442\u0435\u0441\u0442\u044b \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0417\u0430\u0432\u0435\u0434\u0438 CI \u043d\u0430 GitHub Actions \u0441 <code>cargo fmt<\/code>, <code>cargo clippy -- -D warnings<\/code> \u0438 <code>cargo test<\/code>.<\/p>\n<h3>\u042d\u0442\u0430\u043f 5. \u0423\u043c\u043d\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0438 \u0438\u043d\u0442\u0435\u0440\u0438\u043e\u0440-\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c &#8212; \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0448\u044c \u0431\u043e\u044f\u0442\u044c\u0441\u044f Arc<\/h3>\n<h4>\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044c<\/h4>\n<p><code>Box&lt;T&gt;<\/code>, <code>Rc&lt;T&gt;<\/code>, <code>Arc&lt;T&gt;<\/code>, <code>RefCell&lt;T&gt;<\/code>, <code>Cell&lt;T&gt;<\/code>, <code>Mutex&lt;T&gt;<\/code>, <code>RwLock&lt;T&gt;<\/code>, <code>Cow&lt;T&gt;<\/code>. \u041a\u043e\u0433\u0434\u0430 \u043a\u0430\u043a\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u0447\u0435\u043c\u0443. The Rust Book \u0433\u043b\u0430\u0432\u044b 15-16. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e &#8212; <a href=\"https:\/\/doc.rust-lang.org\/nomicon\/\" rel=\"noopener noreferrer nofollow\">The Rustonomicon<\/a> \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440 \u00ab\u0434\u043e\/\u043f\u043e\u0441\u043b\u0435\u00bb<\/h4>\n<p>\u0422\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f: \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u043f\u0438\u0448\u0435\u0442 \u0434\u0435\u0440\u0435\u0432\u043e \u0447\u0435\u0440\u0435\u0437 <code>Box&lt;Node&gt;<\/code> \u0438 \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e, \u0447\u0442\u043e \u0443 \u0443\u0437\u043b\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 &#8212; \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a <code>Rc&lt;RefCell&lt;Node&gt;&gt;<\/code> \u0434\u043b\u044f \u0434\u0435\u0440\u0435\u0432\u0430 \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435 \u0438\u043b\u0438 \u043a <code>Arc&lt;Mutex&lt;Node&gt;&gt;<\/code> \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f. \u0421\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u044f\u0441\u043d\u043e, \u0437\u0430\u0447\u0435\u043c \u044d\u0442\u0438 \u0442\u0438\u043f\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\u044b \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u0445 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u043e\u043f\u0430\u043b\u043e.<\/p>\n<pre><code class=\"rust\">use std::rc::Rc;use std::cell::RefCell;type NodeRef = Rc&lt;RefCell&lt;Node&gt;&gt;;struct Node {    value: i32,    children: Vec&lt;NodeRef&gt;,    parent: Option&lt;NodeRef&gt;,}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>\u041f\u0440\u043e\u0435\u043a\u0442 \u044d\u0442\u0430\u043f\u0430<\/h4>\n<p>\u0413\u0440\u0430\u0444\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441 \u043e\u0431\u0445\u043e\u0434\u043e\u043c \u0432 \u0448\u0438\u0440\u0438\u043d\u0443 \u0438 \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0443. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430 <code>Vec&lt;Vec&lt;usize&gt;&gt;<\/code> (adjacency list &#8212; \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u0445\u0432\u0430\u0442\u0430\u0435\u0442), \u043f\u043e\u0442\u043e\u043c \u043d\u0430 <code>Rc&lt;RefCell&gt;<\/code> \u0441\u043e \u0432\u0437\u0430\u0438\u043c\u043d\u044b\u043c\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u0442\u0430\u043d\u0435\u0442 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0439.<\/p>\n<h3>\u042d\u0442\u0430\u043f 6. \u041c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c &#8212; \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u043b\u0438 \u043d\u0435 \u043f\u0430\u0434\u0430\u0435\u0442<\/h3>\n<h4>\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044c<\/h4>\n<p><code>std::thread<\/code>, <code>std::sync<\/code> (<code>Mutex<\/code>, <code>RwLock<\/code>, <code>Arc<\/code>, <code>Barrier<\/code>, <code>Condvar<\/code>), <a href=\"https:\/\/github.com\/crossbeam-rs\/crossbeam\" rel=\"noopener noreferrer nofollow\">crossbeam<\/a> \u0434\u043b\u044f \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0438 \u044d\u043f\u043e\u0445\u0430\u043b\u044c\u043d\u043e\u0433\u043e GC, <a href=\"https:\/\/github.com\/rayon-rs\/rayon\" rel=\"noopener noreferrer nofollow\">rayon<\/a> \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, <a href=\"https:\/\/github.com\/Amanieu\/parking_lot\" rel=\"noopener noreferrer nofollow\">parking_lot<\/a> \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u043c\u044c\u044e\u0442\u0435\u043a\u0441\u043e\u0432. Trait\u2019\u044b <code>Send<\/code> \u0438 <code>Sync<\/code>, \u0447\u0442\u043e \u043e\u043d\u0438 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442.<\/p>\n<h4>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043c\u044b\u0441\u043b\u044c \u044d\u0442\u0430\u043f\u0430<\/h4>\n<blockquote>\n<p>Rust \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043a\u0443 \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0451 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0435\u0435. Data race &#8212; \u044d\u0442\u043e compile error.<\/p>\n<\/blockquote>\n<p>\u042d\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438: \u0432\u043c\u0435\u0441\u0442\u043e \u00ab\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b, \u0443\u0432\u0438\u0434\u0435\u043b \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u044b\u0439 \u043a\u0440\u0430\u0448 \u0447\u0435\u0440\u0435\u0437 10 \u043c\u0438\u043d\u0443\u0442\u00bb \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0448\u044c \u00ab\u043d\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e shared mutable state \u0431\u0435\u0437 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438\u00bb.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440<\/h4>\n<pre><code class=\"rust\">use std::sync::{Arc, Mutex};use std::thread;let counter = Arc::new(Mutex::new(0));let mut handles = vec![];for _ in 0..10 {    let c = Arc::clone(&amp;counter);    handles.push(thread::spawn(move || {        let mut n = c.lock().unwrap();        *n += 1;    }));}for h in handles { h.join().unwrap(); }println!(\"{}\", *counter.lock().unwrap()); \/\/ \u0432\u0441\u0435\u0433\u0434\u0430 10<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>\u041f\u0440\u043e\u0435\u043a\u0442 \u044d\u0442\u0430\u043f\u0430<\/h4>\n<p>\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 word-counter \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 rayon, \u043f\u043e\u0442\u043e\u043c thread pool \u043d\u0430 \u043a\u0430\u043d\u0430\u043b\u0430\u0445 \u0447\u0435\u0440\u0435\u0437 crossbeam. \u0421\u0440\u0430\u0432\u043d\u0438 \u0441 \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u043d\u0430 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 &#8212; \u043f\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0448\u044c, \u0440\u0430\u0434\u0438 \u0447\u0435\u0433\u043e \u0432\u0441\u0451 \u044d\u0442\u043e.<\/p>\n<h3>\u042d\u0442\u0430\u043f 7. \u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 &#8212; \u0433\u0434\u0435 \u0436\u0438\u0432\u0451\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e production-\u0431\u0430\u0433\u043e\u0432<\/h3>\n<h4>\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044c<\/h4>\n<p><code>async<\/code>\/<code>await<\/code>, <a href=\"https:\/\/tokio.rs\/\" rel=\"noopener noreferrer nofollow\">tokio<\/a> \u043a\u0430\u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 de facto, <a href=\"https:\/\/github.com\/tokio-rs\/axum\" rel=\"noopener noreferrer nofollow\">axum<\/a> \u0434\u043b\u044f HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, <a href=\"https:\/\/github.com\/seanmonstar\/reqwest\" rel=\"noopener noreferrer nofollow\">reqwest<\/a> \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, <a href=\"https:\/\/github.com\/launchbadge\/sqlx\" rel=\"noopener noreferrer nofollow\">sqlx<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/www.sea-ql.org\/SeaORM\/\" rel=\"noopener noreferrer nofollow\">sea-orm<\/a> \u0434\u043b\u044f \u0411\u0414. <a href=\"https:\/\/tokio.rs\/tokio\/tutorial\" rel=\"noopener noreferrer nofollow\">Tokio Tutorial<\/a> &#8212; \u043b\u0443\u0447\u0448\u0438\u0439 \u0432\u0445\u043e\u0434.<\/p>\n<p>\u0421 1.75 (\u0434\u0435\u043a\u0430\u0431\u0440\u044c 2023) <code>async fn<\/code> \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c \u0432 \u0442\u0440\u0435\u0439\u0442\u0430\u0445 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u043d\u043e \u0441 \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0430\u043c\u0438: \u0434\u043b\u044f <code>dyn Trait<\/code> \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043d\u0430\u0447\u0435, \u0434\u043b\u044f <code>Send<\/code>-\u0433\u0440\u0430\u043d\u0438\u0446 \u043d\u0443\u0436\u0435\u043d \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>#[trait_variant::make(Send)]<\/code> \u0438\u043b\u0438 \u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u0440\u0435\u0439\u0442 <code>async-trait<\/code> (\u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445 \u043e\u043d \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c). \u041c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043d\u043e\u0432\u0438\u0447\u043a\u0438 \u0441\u043f\u043e\u0442\u044b\u043a\u0430\u044e\u0442\u0441\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e.<\/p>\n<h4>Cancellation safety \u0438 structured concurrency<\/h4>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0430 async-Rust \u0434\u043b\u044f \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0445 \u0438\u0437 Go \u0438 JS &#8212; cancellation. Future \u0432 Rust \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0439 await-\u0442\u043e\u0447\u043a\u0435. \u0415\u0441\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 <code>select!<\/code> \u0442\u0432\u043e\u0439 \u043a\u043e\u0434 \u0434\u0435\u0440\u0436\u0438\u0442 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 &#8212; \u043f\u043e\u043b\u0443\u0447\u0438\u0448\u044c corrupted state \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u043e\u0433\u043e \u043f\u0430\u043d\u0438\u043a\u0438.<\/p>\n<p>\u041f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0430: \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u0447 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0439 <code>tokio::JoinSet<\/code> \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0443\u0447\u043d\u043e\u0433\u043e <code>spawn<\/code> + \u0441\u0431\u043e\u0440\u043a\u0438 \u0445\u0435\u043d\u0434\u043b\u043e\u0432, \u0434\u043b\u044f \u043e\u0442\u043c\u0435\u043d\u044b &#8212; <code>CancellationToken<\/code> \u0438\u0437 <code>tokio-util<\/code>, \u0434\u043b\u044f select &#8212; \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0432\u0435\u0442\u043a\u0430 cancellation-safe (\u044d\u0442\u043e \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 tokio \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 async-\u043c\u0435\u0442\u043e\u0434\u043e\u0432).<\/p>\n<pre><code class=\"rust\">use tokio::task::JoinSet;let mut set = JoinSet::new();for url in urls {    set.spawn(fetch(url));}while let Some(res) = set.join_next().await {    \/\/ \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043f\u0440\u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u0438 \u043e\u0434\u043d\u043e\u0439 - \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>Graceful shutdown<\/h4>\n<p>\u0421\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043c\u0435\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044c\u0441\u044f \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u044c in-flight \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d:<\/p>\n<pre><code class=\"rust\">use tokio::signal;use tokio_util::sync::CancellationToken;let token = CancellationToken::new();let child = token.child_token();let server = tokio::spawn(async move {    run_server(child).await});signal::ctrl_c().await.unwrap();println!(\"\u043f\u043e\u043b\u0443\u0447\u0435\u043d SIGINT, \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u043c\u0441\u044f\");token.cancel();server.await.unwrap();<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u043d\u0430 middle+. \u0413\u043e\u0442\u043e\u0432\u044c \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0437\u0430\u0440\u0430\u043d\u0435\u0435.<\/p>\n<h4>Tracing &#8212; \u0431\u0435\u0437 \u043d\u0435\u0433\u043e production \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d<\/h4>\n<p>\u0412 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c Rust \u0442\u044b \u043c\u043e\u0436\u0435\u0448\u044c \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c println\u2019\u0430\u043c\u0438. \u0412 async &#8212; \u043d\u0435\u0442: \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438, \u0441\u0442\u0435\u043a \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442. \u0421\u0442\u0430\u0432\u044c <a href=\"https:\/\/github.com\/tokio-rs\/tracing\" rel=\"noopener noreferrer nofollow\">tracing<\/a> \u0438 <a href=\"https:\/\/docs.rs\/tracing-subscriber\/latest\/tracing_subscriber\/\" rel=\"noopener noreferrer nofollow\">tracing-subscriber<\/a> \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0439 <code>#[tracing::instrument]<\/code> \u043d\u0430 \u0432\u0441\u0435 async-\u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432\u044b\u0432\u043e\u0434\u0438 \u0432 JSON \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430. \u042d\u0442\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043d\u0435 \u00ab\u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u0442\u043e\u043c\u00bb.<\/p>\n<h4>\u041f\u0440\u043e\u0435\u043a\u0442 \u044d\u0442\u0430\u043f\u0430<\/h4>\n<p>HTTP-\u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0430 axum: \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0434\u0438\u0442 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 API, \u043a\u0435\u0448\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u044b \u0432 Redis, \u043f\u0438\u0448\u0435\u0442 \u0432 Postgres \u0447\u0435\u0440\u0435\u0437 sqlx. \u0414\u043e\u0431\u0430\u0432\u044c graceful shutdown, structured logging \u0447\u0435\u0440\u0435\u0437 tracing, \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/github.com\/metrics-rs\/metrics\" rel=\"noopener noreferrer nofollow\">metrics<\/a>, \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0441 testcontainers.<\/p>\n<h4>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u0430\u043f\u0430 7<\/h4>\n<p>\u0421\u0434\u0435\u043b\u0430\u0439 pet-\u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 500-1500 \u0441\u0442\u0440\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u043d\u0435\u0434\u0435\u043b\u044e. \u0421\u0435\u0440\u0432\u0438\u0441-\u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0442\u0435\u043b\u044c \u0441\u0441\u044b\u043b\u043e\u043a, \u0431\u043e\u0442 \u0432 Telegram, \u043f\u0440\u043e\u043a\u0441\u0438 \u0441 rate limiting &#8212; \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e. \u041c\u043e\u0436\u0435\u0448\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0441 \u043d\u0443\u043b\u044f &#8212; \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u044d\u0442\u0430\u043f\u0430\u043c.<\/p>\n<h3>\u042d\u0442\u0430\u043f 8. \u041c\u0430\u043a\u0440\u043e\u0441\u044b \u0438 \u043c\u0435\u0442\u0430\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 &#8212; \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0448\u044c \u0441\u0430\u043c \u044f\u0437\u044b\u043a<\/h3>\n<h4>\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044c<\/h4>\n<p>\u0414\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043c\u0430\u043a\u0440\u043e\u0441\u044b (<code>macro_rules!<\/code>), \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u044b\u0435 \u043c\u0430\u043a\u0440\u043e\u0441\u044b \u0442\u0440\u0451\u0445 \u0432\u0438\u0434\u043e\u0432 (derive, attribute, function-like), \u043a\u0440\u0435\u0439\u0442\u044b <a href=\"https:\/\/github.com\/dtolnay\/syn\" rel=\"noopener noreferrer nofollow\">syn<\/a> \u0438 <a href=\"https:\/\/github.com\/dtolnay\/quote\" rel=\"noopener noreferrer nofollow\">quote<\/a>. \u041a\u043d\u0438\u0433\u0430-\u044d\u0442\u0430\u043b\u043e\u043d &#8212; <a href=\"https:\/\/veykril.github.io\/tlborm\/\" rel=\"noopener noreferrer nofollow\">\u00abThe Little Book of Rust Macros\u00bb<\/a>.<\/p>\n<h4>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 macro_rules &#8212; \u0441 \u043d\u0435\u0433\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0432\u0441\u0435<\/h4>\n<pre><code class=\"rust\">macro_rules! hashmap {    ($($key:expr =&gt; $val:expr),* $(,)?) =&gt; {{        let mut m = std::collections::HashMap::new();        $( m.insert($key, $val); )*        m    }};}fn main() {    let m = hashmap! {        \"one\" =&gt; 1,        \"two\" =&gt; 2,    };    println!(\"{:?}\", m);}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>90% \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432 \u0432 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u0435 &#8212; \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0438\u0435. \u041e\u043d\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u0432 DSL \u0431\u0435\u0437 \u0437\u0430\u0445\u043e\u0434\u0430 \u0432 proc-macros.<\/p>\n<h4>\u041b\u0438\u0447\u043d\u043e\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435<\/h4>\n<p>\u041d\u0435 \u043f\u0438\u0448\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u044b\u0435 \u043c\u0430\u043a\u0440\u043e\u0441\u044b, \u043f\u043e\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f. \u041a\u043e\u0433\u0434\u0430 \u0434\u043e\u0439\u0434\u0451\u0448\u044c &#8212; \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043c\u043e\u0442\u0440\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043a\u0440\u0435\u0439\u0442\u044b: <a href=\"https:\/\/github.com\/TedDriggs\/darling\" rel=\"noopener noreferrer nofollow\">darling<\/a> \u0434\u043b\u044f \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0436\u0438\u0437\u043d\u044c, \u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0439 <code>syn<\/code> \u0441 \u0444\u0438\u0447\u0435\u0439 <code>full<\/code> &#8212; \u0431\u0435\u0437 \u043d\u0435\u0451 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445.<\/p>\n<h4>\u0413\u0434\u0435 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e<\/h4>\n<p>\u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0448\u044c <code>#[derive(Serialize, Deserialize)]<\/code> \u0438\u0437 serde &#8212; \u0442\u044b \u0443\u0436\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0448\u044c \u043e\u0442 proc-macros. \u0421\u0432\u043e\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f DSL \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0438\u043b\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f boilerplate \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445.<\/p>\n<h4>\u041f\u0440\u043e\u0435\u043a\u0442 \u044d\u0442\u0430\u043f\u0430<\/h4>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 derive-\u043c\u0430\u043a\u0440\u043e\u0441: <code>#[derive(Builder)]<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 builder-\u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u042d\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435 \u0438 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0432\u0445\u043e\u0434 \u0432 \u043c\u0438\u0440 <code>syn<\/code>\/<code>quote<\/code>.<\/p>\n<h3>\u042d\u0442\u0430\u043f 9. Unsafe Rust \u0438 FFI &#8212; \u0441\u043f\u0443\u0441\u043a\u0430\u0435\u0448\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0432\u0430\u043b<\/h3>\n<h4>\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044c<\/h4>\n<p>\u0427\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432 <code>unsafe<\/code>-\u0431\u043b\u043e\u043a\u0435 (\u0432\u0441\u0435\u0433\u043e \u043f\u044f\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439), <a href=\"https:\/\/doc.rust-lang.org\/nomicon\/\" rel=\"noopener noreferrer nofollow\">The Rustonomicon<\/a>, FFI \u0441 C \u0447\u0435\u0440\u0435\u0437 <code>extern \"C\"<\/code>, <code>#[repr(C)]<\/code>, \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0438 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/github.com\/rust-lang\/rust-bindgen\" rel=\"noopener noreferrer nofollow\">bindgen<\/a> \u0438 <a href=\"https:\/\/github.com\/mozilla\/cbindgen\" rel=\"noopener noreferrer nofollow\">cbindgen<\/a>. \u041f\u043e\u043d\u044f\u0442\u0438\u0435 undefined behavior \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d\u043e \u043e\u043f\u0430\u0441\u043d\u0435\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0431\u0430\u0433\u0430.<\/p>\n<h4>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043c\u044b\u0441\u043b\u044c \u043f\u0440\u043e unsafe<\/h4>\n<blockquote>\n<p><code>unsafe<\/code> &#8212; \u043d\u0435 \u00ab\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u00bb. \u042d\u0442\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442: \u0438\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u0442\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0448\u044c \u0441\u0430\u043c.<\/p>\n<\/blockquote>\n<p>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u043b\u043d\u0430 unsafe-\u043a\u043e\u0434\u0430, \u043d\u043e \u043e\u043d \u0437\u0430\u0432\u0451\u0440\u043d\u0443\u0442 \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b.<\/p>\n<h4>\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u0442\u044c unsafe-\u0431\u043b\u043e\u043a<\/h4>\n<pre><code class=\"rust\">\/\/\/ # Safety\/\/\/ \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c ptr \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c, \u0432\u044b\u0440\u043e\u0432\u043d\u0435\u043d \u043d\u0430 T \u0438\/\/\/ \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\/\/\/ \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435.unsafe fn read_owned&lt;T&gt;(ptr: *mut T) -&gt; T {    \/\/ SAFETY: \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435.    \/\/ \u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e: ptr \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430.    std::ptr::read(ptr)}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u0432\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 unsafe-\u043a\u043e\u0434 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u043c: <code># Safety<\/code> \u0441\u0435\u043a\u0446\u0438\u044f \u0432 doc-\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438 <code>SAFETY:<\/code> \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c unsafe-\u0431\u043b\u043e\u043a\u043e\u043c, \u0433\u0434\u0435 \u044f\u0432\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d.<\/p>\n<h4>Soundness &#8212; \u043a\u043e\u043d\u0446\u0435\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0434\u043e \u043f\u043e\u043d\u044f\u0442\u044c<\/h4>\n<p>Sound API &#8212; \u0442\u0430\u043a\u043e\u0439, \u0433\u0434\u0435 \u043d\u0438\u043a\u0430\u043a\u0430\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a UB. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0442\u0432\u043e\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0431\u0435\u0437 <code>unsafe<\/code> \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c use-after-free &#8212; \u0442\u0432\u043e\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 unsound. \u042d\u0442\u043e \u043d\u0435 \u00ab\u0431\u044d\u0439\u0434\u0436\u0438\u043a \u0437\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u00bb, \u044d\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043a \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 API. \u041a\u043e\u0433\u0434\u0430 \u0442\u0430\u043a\u043e\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442 \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043a\u0440\u0435\u0439\u0442\u0430\u0445 &#8212; \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u044e\u0442 yanked-\u0432\u0435\u0440\u0441\u0438\u044e \u0438 \u043f\u0438\u0448\u0443\u0442 \u043f\u043e\u0441\u0442\u043c\u043e\u0440\u0442\u0435\u043c.<\/p>\n<h4>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/h4>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/rust-lang\/miri\" rel=\"noopener noreferrer nofollow\">miri<\/a> &#8212; \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 MIR, \u043b\u043e\u0432\u0438\u0442 UB \u0432 unsafe-\u043a\u043e\u0434\u0435 (<code>cargo +nightly miri test<\/code>);<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/tokio-rs\/loom\" rel=\"noopener noreferrer nofollow\">loom<\/a> &#8212; \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 concurrent-\u043a\u043e\u0434\u0430 \u0441 \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043c interleavings;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/rust-fuzz\/cargo-fuzz\" rel=\"noopener noreferrer nofollow\">cargo-fuzz<\/a> \u0434\u043b\u044f fuzz-\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 libFuzzer;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/doc.rust-lang.org\/beta\/unstable-book\/compiler-flags\/sanitizer.html\" rel=\"noopener noreferrer nofollow\">Address Sanitizer<\/a> \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 FFI-\u043a\u043e\u0434\u0430.<\/p>\n<\/li>\n<\/ul>\n<h4>\u041f\u0440\u043e\u0435\u043a\u0442 \u044d\u0442\u0430\u043f\u0430<\/h4>\n<p>\u0421\u0434\u0435\u043b\u0430\u0439 safe-\u043e\u0431\u0451\u0440\u0442\u043a\u0443 \u043d\u0430\u0434 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e C-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 (zlib, libcurl, \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0435). \u041f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435 \u043d\u0430 FFI \u043f\u043b\u044e\u0441 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u0447\u0435\u043c \u00absafe\u00bb \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u00ab\u043d\u0435 \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 \u0442\u0432\u043e\u0438\u0445 \u0442\u0435\u0441\u0442\u0430\u0445\u00bb.<\/p>\n<h3>\u042d\u0442\u0430\u043f 10. \u042d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b &#8212; \u0432\u044b\u0445\u043e\u0434\u0438\u0448\u044c \u0432 open source<\/h3>\n<h4>\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044c<\/h4>\n<ul>\n<li>\n<p>\u0441\u0431\u043e\u0440\u043a\u0430 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043a\u0440\u0435\u0439\u0442\u043e\u0432: <code>cargo publish<\/code>, \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, semver;<\/p>\n<\/li>\n<li>\n<p>workspaces \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0435\u0439\u0442\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0437\u0440\u0435\u043b\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430: <a href=\"https:\/\/github.com\/EmbarkStudios\/cargo-deny\" rel=\"noopener noreferrer nofollow\">cargo-deny<\/a> (\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439), <a href=\"https:\/\/github.com\/rustsec\/rustsec\" rel=\"noopener noreferrer nofollow\">cargo-audit<\/a> (\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 CVE), <a href=\"https:\/\/github.com\/bnjbvr\/cargo-machete\" rel=\"noopener noreferrer nofollow\">cargo-machete<\/a> (\u043f\u043e\u0438\u0441\u043a \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439), <a href=\"https:\/\/nexte.st\/\" rel=\"noopener noreferrer nofollow\">cargo-nextest<\/a> (\u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0442\u0435\u0441\u0442-\u0440\u0430\u043d\u043d\u0435\u0440);<\/p>\n<\/li>\n<li>\n<p>\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438\u043d\u0433 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/github.com\/bheisler\/criterion.rs\" rel=\"noopener noreferrer nofollow\">criterion<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/github.com\/cross-rs\/cross\" rel=\"noopener noreferrer nofollow\">cross<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 &#8212; <a href=\"https:\/\/github.com\/flamegraph-rs\/flamegraph\" rel=\"noopener noreferrer nofollow\">flamegraph<\/a>, perf, <a href=\"https:\/\/github.com\/mstange\/samply\" rel=\"noopener noreferrer nofollow\">samply<\/a>.<\/p>\n<\/li>\n<\/ul>\n<h4>\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 CI \u0434\u043b\u044f \u043a\u0440\u0435\u0439\u0442\u0430 \u043d\u0430 crates.io<\/h4>\n<pre><code class=\"yaml\"># .github\/workflows\/ci.ymlname: CIon: [push, pull_request]jobs:  test:    runs-on: ubuntu-latest    steps:      - uses: actions\/checkout@v4      - uses: dtolnay\/rust-toolchain@stable        with: { components: rustfmt, clippy }      - run: cargo fmt --check      - run: cargo clippy -- -D warnings      - run: cargo test --all-features<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421 \u044d\u0442\u0438\u043c \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u043c \u0442\u0432\u043e\u0439 \u043a\u0440\u0435\u0439\u0442 \u0443\u0436\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e.<\/p>\n<h4>\u0413\u0434\u0435 \u0431\u0440\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 open source-\u043e\u043f\u044b\u0442<\/h4>\n<p><a href=\"https:\/\/this-week-in-rust.org\/\" rel=\"noopener noreferrer nofollow\">This Week in Rust<\/a> \u0432\u0435\u0434\u0451\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u00abCall for Participation\u00bb, \u0442\u0430\u043c \u0435\u0436\u0435\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442 issue \u0441 \u043c\u0435\u0442\u043a\u043e\u0439 \u00abgood first issue\u00bb \u0438\u0437 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u0437\u0430\u0445\u043e\u0434 &#8212; \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0442\u044b \u0441\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0448\u044c\u0441\u044f, \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u043e\u0434\u0438\u043d \u0431\u0430\u0433 \u0438\u043b\u0438 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e. \u041a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u044b \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u0440\u0435\u0439\u0442\u043e\u0432 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0434\u043e\u0431\u0440\u043e\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h4>\u041f\u0440\u043e\u0435\u043a\u0442 \u044d\u0442\u0430\u043f\u0430<\/h4>\n<p>\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0439 \u0441\u0432\u043e\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u0440\u0435\u0439\u0442. \u041d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u043d\u044b\u0439 &#8212; \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0443\u0437\u043a\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0448\u044c\u0441\u044f \u0441\u0430\u043c. \u0426\u0438\u043a\u043b \u043e\u0442 <code>cargo new<\/code> \u0434\u043e <code>cargo publish<\/code> \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0440\u0443\u043a\u0430\u043c\u0438.<\/p>\n<h3>\u042d\u0442\u0430\u043f 11. \u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0440\u043e\u0444\u0438 &#8212; \u0442\u043e, \u0447\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044f\u0435\u0442 senior \u043e\u0442 middle<\/h3>\n<h4>\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044c<\/h4>\n<ul>\n<li>\n<p>\u0433\u043b\u0443\u0431\u043e\u043a\u0430\u044f \u0442\u0438\u043f\u043e\u0432\u0430\u044f \u043c\u0430\u0433\u0438\u044f: HRTB, GAT (generic associated types), type-level programming \u0447\u0435\u0440\u0435\u0437 \u0442\u0438\u043f\u0430\u0436\u0438-\u043c\u0430\u0440\u043a\u0435\u0440\u044b;<\/p>\n<\/li>\n<li>\n<p>variance \u0438 <code>PhantomData<\/code> &#8212; \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u0438 \u0438 \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u044b;<\/p>\n<\/li>\n<li>\n<p>const generics \u0432 production-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u0445 (\u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u043d\u0437\u043e\u0440\u043e\u0432);<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 borrow checker \u0434\u043e \u0443\u0440\u043e\u0432\u043d\u044f intuition &#8212; \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0448\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0434\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>MIR \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 &#8212; <a href=\"https:\/\/rustc-dev-guide.rust-lang.org\/\" rel=\"noopener noreferrer nofollow\">Rust Compiler Development Guide<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0430\u043c\u044f\u0442\u0438 Rust (\u043f\u043e\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u043d\u043e \u0435\u0441\u0442\u044c <a href=\"https:\/\/github.com\/rust-lang\/unsafe-code-guidelines\" rel=\"noopener noreferrer nofollow\">aliasing model Stacked Borrows \/ Tree Borrows<\/a>);<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435 async-\u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b: pinning, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 Future, runtime-\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<h4>GAT &#8212; \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435<\/h4>\n<p>Generic associated types (\u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 Rust 1.65) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0442\u0440\u0435\u0439\u0442\u043e\u0432. \u0421\u0430\u043c\u044b\u0439 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 &#8212; lending iterator: \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0431\u0443\u0444\u0435\u0440.<\/p>\n<pre><code class=\"rust\">trait LendingIterator {    type Item&lt;'a&gt; where Self: 'a;    fn next(&amp;mut self) -&gt; Option&lt;Self::Item&lt;'_&gt;&gt;;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043e GAT \u0442\u0430\u043a\u043e\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u0432\u044b\u0440\u0430\u0437\u0438\u043c\u043e \u0432 Rust \u0431\u0435\u0437 \u043e\u0431\u0445\u043e\u0434\u043d\u044b\u0445 \u043c\u0430\u043d\u0451\u0432\u0440\u043e\u0432. \u0415\u0441\u043b\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c, \u0437\u0430\u0447\u0435\u043c \u0437\u0434\u0435\u0441\u044c <code>Item&lt;'a&gt;<\/code> \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0443\u0436\u0435\u043d <code>where Self: 'a<\/code> &#8212; \u0442\u044b \u043d\u0430 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435.<\/p>\n<h4>HRTB &#8212; higher-ranked trait bounds<\/h4>\n<p><code>for&lt;'a&gt;<\/code> \u043d\u0443\u0436\u0435\u043d, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043b\u044e\u0431\u044b\u043c lifetime, \u0430 \u043d\u0435 \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"rust\">fn apply&lt;F&gt;(f: F) where F: for&lt;'a&gt; Fn(&amp;'a str) -&gt; &amp;'a str {    let s = String::from(\"hello\");    println!(\"{}\", f(&amp;s));}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0411\u0435\u0437 <code>for&lt;'a&gt;<\/code> \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u043e\u0434\u0438\u043d \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 lifetime, \u0438 \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u0449\u0438\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u043d\u0435 \u043f\u043e\u0434\u043e\u0439\u0434\u0443\u0442.<\/p>\n<h4>Variance \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0438<\/h4>\n<p>Variance \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u00ab\u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u00bb \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0442\u0438\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u043e \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0435\u0442 \u0432 FFI \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 smart-pointer\u2019\u0430\u0445 &#8212; \u0442\u0430\u043c \u0431\u0435\u0437 <code>PhantomData&lt;T&gt;<\/code>, <code>PhantomData&lt;fn() -&gt; T&gt;<\/code> \u0438\u043b\u0438 <code>PhantomData&lt;*const T&gt;<\/code> \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 borrow checker\u2019\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u044b\u043c.<\/p>\n<h4>\u0427\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432 \u0433\u043e\u043b\u043e\u0432\u0435<\/h4>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0442\u044b \u0443\u043c\u0435\u0435\u0448\u044c \u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 borrow checker\u2019\u0430 \u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0433\u0434\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0430\u0432, \u0430 \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043e\u0434. \u041d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u0432 senior+ \u0440\u043e\u043b\u0438 \u044d\u0442\u043e\u0442 \u043d\u0430\u0432\u044b\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0436\u0438\u0432\u044b\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438.<\/p>\n<h4>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u0430\u043f\u0430 11<\/h4>\n<p>\u041c\u043e\u0436\u0435\u0448\u044c \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 <code>Pin<\/code> \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0442\u043d\u044b\u0445 Future, \u0431\u0435\u0437 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0417\u043d\u0430\u0435\u0448\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 <code>Send<\/code> \u0438 <code>Sync<\/code> \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u00ab\u043a\u0430\u043a\u043e\u0439 \u0438\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439\u00bb. \u0425\u043e\u0442\u044f \u0431\u044b \u0440\u0430\u0437 \u0441\u0434\u0435\u043b\u0430\u043b \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442 \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043a\u0440\u0435\u0439\u0442 \u0443\u0440\u043e\u0432\u043d\u044f tokio\/serde\/clap, \u0438 \u043e\u043d \u0431\u044b\u043b \u043f\u0440\u0438\u043d\u044f\u0442.<\/p>\n<h3>\u0427\u0430\u0441\u0442\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432<\/h3>\n<p>\u0413\u0440\u0430\u0431\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044e \u0433\u043e\u0434\u0430\u043c\u0438 \u0432 \u0447\u0430\u0442\u0430\u0445 \u0438 pull request\u2019\u0430\u0445:<\/p>\n<ul>\n<li>\n<p><strong>\u041f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0435 Python\/JS-\u043a\u043e\u0434\u0430 \u043e\u0434\u0438\u043d-\u0432-\u043e\u0434\u0438\u043d.<\/strong> \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u044d\u0442\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043d\u0430 shared mutable state. \u0412 Rust \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442 \u043e\u0431\u043c\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0451 <code>Rc&lt;RefCell&gt;<\/code> \u0438\u043b\u0438 <code>Arc&lt;Mutex&gt;<\/code> \u0438 \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u0432\u0435\u0441\u044c \u0441\u043c\u044b\u0441\u043b \u044f\u0437\u044b\u043a\u0430. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443: \u0433\u0434\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0436\u0438\u0432\u0443\u0442, \u043a\u0442\u043e \u0438\u043c\u0438 \u0432\u043b\u0430\u0434\u0435\u0435\u0442, \u043a\u0442\u043e \u0447\u0438\u0442\u0430\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p><code><strong>.clone()<\/strong><\/code><strong> \u043a\u0430\u043a \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u0442\u043a\u043d\u0443\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440.<\/strong> \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0434\u0438\u0437\u0430\u0439\u043d\u0430. \u0415\u0441\u043b\u0438 \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u0448\u044c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u0446\u0438\u043a\u043b\u0435 &#8212; \u043f\u043e\u0447\u0442\u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c <code>String<\/code> \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 &#8212; \u043f\u043e\u0434\u0443\u043c\u0430\u0439 \u043f\u0440\u043e <code>Cow&lt;str&gt;<\/code>.<\/p>\n<\/li>\n<li>\n<p><code><strong>unwrap()<\/strong><\/code><strong> \u0432 production-\u043a\u043e\u0434\u0435.<\/strong> \u0414\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430 &#8212; \u043d\u0435\u0442. \u0417\u0430\u043c\u0435\u043d\u0438 \u043d\u0430 <code>?<\/code> \u0441 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c error-\u0442\u0438\u043f\u043e\u043c \u043b\u0438\u0431\u043e \u043d\u0430 <code>expect(\"\u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\")<\/code> \u0442\u0430\u043c, \u0433\u0434\u0435 panic \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>\u0418\u0437\u0431\u0435\u0433\u0430\u043d\u0438\u0435 <\/strong><code><strong>unsafe<\/strong><\/code><strong> \u043b\u044e\u0431\u043e\u0439 \u0446\u0435\u043d\u043e\u0439.<\/strong> <code>unsafe<\/code> \u043d\u0435 \u0437\u043b\u043e. \u0417\u043b\u043e &#8212; unsound API, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c. \u0418\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c &#8212; \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 unsafe-\u0431\u043b\u043e\u043a \u0441 \u0438\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u043e\u0439 safe-\u043e\u0431\u0451\u0440\u0442\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u0442\u0438\u043f\u0430\u0445.<\/strong> \u041d\u0435 \u043f\u0438\u0448\u0438 generic-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u043f\u044f\u0442\u044c\u044e trait bounds \u0441\u0440\u0430\u0437\u0443. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0442\u0438\u043f\u044b, \u043f\u043e\u0442\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u0432\u0438\u0434\u0435\u043d \u043f\u0430\u0442\u0442\u0435\u0440\u043d &#8212; generic.<\/p>\n<\/li>\n<li>\n<p><strong>\u0418\u0433\u043d\u043e\u0440 clippy.<\/strong> \u0412\u043a\u043b\u044e\u0447\u0438 <code>cargo clippy -- -D warnings<\/code> \u0432 CI \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430. Clippy \u043b\u043e\u0432\u0438\u0442 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0430\u043d\u0442\u0438\u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043d\u0430\u0447\u0435 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0431\u0435\u0437 \u043c\u0435\u0440\u044b.<\/strong> <code>cargo add<\/code> \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0437\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u043d\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c &#8212; \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u0430\u0442\u0430\u043a\u0438 \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 maintenance burden. \u041d\u0430 pet-\u043f\u0440\u043e\u0435\u043a\u0442\u0435 10-15 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0440\u0430\u0437\u0443\u043c\u043d\u043e, 100+ &#8212; \u043f\u043e\u0432\u043e\u0434 \u0437\u0430\u0434\u0443\u043c\u0430\u0442\u044c\u0441\u044f.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0414\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0432 rustc<\/h3>\n<p>\u0421\u0430\u043c\u0430\u044f \u0432\u044b\u0441\u043e\u043a\u0430\u044f \u0442\u043e\u0447\u043a\u0430 roadmap\u2019\u0430 &#8212; \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u041d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0440\u044c\u0435\u0440\u044b, \u043d\u043e \u043b\u0443\u0447\u0448\u0430\u044f \u0448\u043a\u043e\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c.<\/p>\n<p>\u041f\u0443\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0439:<\/p>\n<ol>\n<li>\n<p>\u0421\u0442\u0430\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u043e\u043c \u0432 <a href=\"https:\/\/github.com\/tokio-rs\/tokio\" rel=\"noopener noreferrer nofollow\">tokio<\/a>, <a href=\"https:\/\/github.com\/serde-rs\/serde\" rel=\"noopener noreferrer nofollow\">serde<\/a>, <a href=\"https:\/\/github.com\/rust-lang\/rust-analyzer\" rel=\"noopener noreferrer nofollow\">rust-analyzer<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/github.com\/rust-lang\/cargo\" rel=\"noopener noreferrer nofollow\">cargo<\/a>. \u042d\u0442\u043e \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u00absenior+ \u0432 Rust\u00bb.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/rustc-dev-guide.rust-lang.org\/\" rel=\"noopener noreferrer nofollow\">Rustc Dev Guide<\/a> \u0438 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e. \u0413\u043e\u0442\u043e\u0432\u044c\u0441\u044f: \u043f\u043e\u043b\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 30-90 \u043c\u0438\u043d\u0443\u0442 \u043d\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0439\u0442\u0438 E-easy issue \u0432 <a href=\"https:\/\/github.com\/rust-lang\/rust\/labels\/E-easy\" rel=\"noopener noreferrer nofollow\">rust-lang\/rust<\/a> \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c PR. \u042d\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0447\u0435\u0440\u043e\u0432 \u0441 \u043d\u0435\u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0441\u043b\u0435 3-5 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0445 PR \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0442\u0430\u0442\u0443\u0441 reviewer \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434 (compiler, lang, libs).<\/p>\n<\/li>\n<\/ol>\n<blockquote>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 PR \u0432 rustc \u043e\u0442 issue \u0434\u043e merge \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 2-4 \u043d\u0435\u0434\u0435\u043b\u0438. CI \u0434\u043b\u0438\u043d\u043d\u044b\u0439, \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0440\u0435\u0432\u044c\u044e \u0434\u043b\u0438\u043d\u043d\u044b\u0435, \u0430\u0432\u0442\u043e\u0440\u044b \u043f\u0435\u0440\u0444\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0441\u0442\u044b. \u042d\u0442\u043e \u043d\u0435 \u043e\u0442\u043a\u0430\u0437 &#8212; \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430.<\/p>\n<\/blockquote>\n<p>\u0420\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0439 \u0441\u0440\u043e\u043a \u0434\u043e \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0430 &#8212; 2-4 \u0433\u043e\u0434\u0430 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043a\u0430\u043a \u043d\u0430\u0447\u0430\u043b \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 Rust \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e. \u0423 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0432\u0441\u0435, \u0438 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e. \u041a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442 \u0432 rustc \u043d\u0435 \u0446\u0435\u043b\u044c \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435.<\/p>\n<h3>\u0427\u0430\u0441\u0442\u044c 2. \u041a\u0443\u0434\u0430 \u0440\u0430\u0441\u0442\u0438 \u043f\u043e\u0441\u043b\u0435 roadmap<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u044d\u0442\u0430\u043f\u044b 0-11 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b, \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><strong>Systems programming.<\/strong> \u042f\u0434\u0440\u043e Linux (Rust-for-Linux \u0443\u0436\u0435 \u0432 \u0430\u043f\u0441\u0442\u0440\u0438\u043c\u0435), eBPF, \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u044b, \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0421\u0430\u043c\u0430\u044f \u00ab\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f\u00bb \u043d\u0438\u0448\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>Embedded \u0438 IoT.<\/strong> No-std, embedded-hal, RTIC, embassy \u0434\u043b\u044f async \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u0432\u0445\u043e\u0434 &#8212; <a href=\"https:\/\/docs.rust-embedded.org\/book\/\" rel=\"noopener noreferrer nofollow\">Embedded Rust Book<\/a>.<\/p>\n<\/li>\n<li>\n<p><strong>WebAssembly.<\/strong> wasm-bindgen, Yew\/Leptos\/Dioxus \u0434\u043b\u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430, WASI \u0434\u043b\u044f server-side WASM. \u0417\u0434\u0435\u0441\u044c Rust \u0441\u0435\u0439\u0447\u0430\u0441 \u043b\u0438\u0434\u0435\u0440 \u043f\u043e \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 big data.<\/strong> TiKV, Materialize, Polars, DataFusion, InfluxDB. \u041f\u043e\u043b\u043d\u043e \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f \u0438 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d.<\/strong> Solana, Polkadot, \u043c\u043d\u043e\u0433\u0438\u0435 L2-\u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0430 Ethereum. \u041f\u043b\u0430\u0442\u0438\u0442 \u0445\u043e\u0440\u043e\u0448\u043e, \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u043e\u0434\u0430\u0442\u0435\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>Compiler\/language design.<\/strong> Rustc, Cranelift, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043d\u0430 Rust.<\/p>\n<\/li>\n<li>\n<p><strong>DevOps-\u0442\u0443\u043b\u0438\u043d\u0433.<\/strong> Vector, OpenTelemetry, sccache &#8212; \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0430\u0432\u044f\u0442\u0441\u044f \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>AI\/ML \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430.<\/strong> <a href=\"https:\/\/github.com\/huggingface\/candle\" rel=\"noopener noreferrer nofollow\">candle<\/a>, <a href=\"https:\/\/github.com\/tracel-ai\/burn\" rel=\"noopener noreferrer nofollow\">burn<\/a>, <a href=\"https:\/\/github.com\/huggingface\/tokenizers\" rel=\"noopener noreferrer nofollow\">tokenizers<\/a> \u043e\u0442 HuggingFace &#8212; \u0431\u044b\u0441\u0442\u0440\u043e\u0440\u0430\u0441\u0442\u0443\u0449\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0451. \u0425\u0432\u0430\u0442\u0438\u0442 \u043e\u0434\u043d\u043e\u0439-\u0434\u0432\u0443\u0445 \u043d\u0438\u0448, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u044b \u0433\u043b\u0443\u0431\u0436\u0435 \u0441\u0435\u0440\u0435\u0434\u043d\u044f\u043a\u0430.<\/p>\n<h3>\u0421\u043b\u0430\u0431\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 Rust, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0435\u0434\u043a\u043e \u0433\u043e\u0432\u043e\u0440\u044f\u0442<\/h3>\n<p>\u041c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e zero-cost abstractions \u0438 memory safety. \u0412\u043e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430.<\/p>\n<h4>\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435<\/h4>\n<ul>\n<li>\n<p><strong>\u0414\u043e\u043b\u0433\u0430\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f.<\/strong> \u041d\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u0431\u0438\u043b\u0434 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c 5-15 \u043c\u0438\u043d\u0443\u0442, \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 &#8212; 30-90 \u0441\u0435\u043a\u0443\u043d\u0434. \u041f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 workspaces, <a href=\"https:\/\/github.com\/mozilla\/sccache\" rel=\"noopener noreferrer nofollow\">sccache<\/a>, \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043b\u0438\u0448\u043d\u0438\u0445 \u0444\u0438\u0447, <a href=\"https:\/\/github.com\/rui314\/mold\" rel=\"noopener noreferrer nofollow\">mold<\/a> \u043a\u0430\u043a \u043b\u0438\u043d\u043a\u0435\u0440. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>Async-\u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c.<\/strong> Pin, Future, \u0440\u0443\u0447\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f runtime, cancellation safety &#8212; \u0441\u0430\u043c\u044b\u0435 \u0442\u044f\u0436\u0451\u043b\u044b\u0435 \u0442\u0435\u043c\u044b \u0432 \u044f\u0437\u044b\u043a\u0435. \u041c\u043d\u043e\u0433\u0438\u0435 senior-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0430 Rust \u043d\u0435 \u043f\u0438\u0448\u0443\u0442 \u0441\u0432\u043e\u0438 Future \u0440\u0443\u043a\u0430\u043c\u0438 \u0437\u0430 \u0432\u0441\u044e \u043a\u0430\u0440\u044c\u0435\u0440\u0443.<\/p>\n<\/li>\n<li>\n<p><strong>GUI-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u043d\u0435\u0437\u0440\u0435\u043b\u044b\u0435.<\/strong> <a href=\"https:\/\/github.com\/emilk\/egui\" rel=\"noopener noreferrer nofollow\">egui<\/a>, <a href=\"https:\/\/github.com\/iced-rs\/iced\" rel=\"noopener noreferrer nofollow\">iced<\/a>, <a href=\"https:\/\/github.com\/slint-ui\/slint\" rel=\"noopener noreferrer nofollow\">slint<\/a>, <a href=\"https:\/\/tauri.app\/\" rel=\"noopener noreferrer nofollow\">Tauri<\/a> &#8212; \u0432\u0441\u0435 \u043e\u043d\u0438 \u043b\u0438\u0431\u043e \u043d\u0438\u0448\u0435\u0432\u044b\u0435, \u043b\u0438\u0431\u043e \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u0414\u043e \u0443\u0440\u043e\u0432\u043d\u044f Qt \u0438 Flutter \u0438\u043c \u0434\u0430\u043b\u0435\u043a\u043e.<\/p>\n<\/li>\n<li>\n<p><strong>Game dev \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0443\u0442\u0438.<\/strong> <a href=\"https:\/\/bevyengine.org\/\" rel=\"noopener noreferrer nofollow\">Bevy<\/a> \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u044f \u043f\u043e\u043a\u0430 \u043d\u0430 Unreal \u0438 Unity. \u0411\u0440\u0430\u0442\u044c Rust \u043f\u0435\u0440\u0432\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u0434\u043b\u044f game dev &#8212; \u0441\u043f\u043e\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>Rust Edition.<\/strong> Edition (2015\/2018\/2021\/2024) &#8212; \u0441\u043d\u0438\u043c\u043a\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 backward-compatible: \u043a\u043e\u0434 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 edition \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0434\u0440\u0443\u0436\u0438\u0442, \u043f\u0440\u0438 \u0430\u043f\u0434\u0435\u0439\u0442\u0435 \u043d\u0443\u0436\u0435\u043d <code>cargo fix --edition<\/code>. \u0418\u043d\u043e\u0433\u0434\u0430 \u043f\u043e\u0434\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u0442 \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u0432 \u0432 legacy-\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0420\u044b\u043d\u043e\u0447\u043d\u044b\u0435<\/h4>\n<ul>\n<li>\n<p><strong>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0439\u043c\u0430.<\/strong> Rust-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043c\u0430\u043b\u043e, \u0438 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 Rust-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u0440\u043e\u0433\u043e. \u042d\u0442\u043e \u043f\u043b\u044e\u0441 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u043a\u0442\u043e \u0435\u0433\u043e \u0443\u0447\u0438\u0442, \u0438 \u043c\u0438\u043d\u0443\u0441 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043d\u0435\u0434\u0440\u044f\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u0430.<\/strong> \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043a\u0440\u0435\u0439\u0442\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043e\u0442\u043b\u0438\u0447\u043d\u043e. \u041d\u043e \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0448\u044c \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u0440\u0435\u0439\u0442 &#8212; \u043c\u043e\u0436\u0435\u0448\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c README \u043d\u0430 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u0412\u044b\u0441\u043e\u043a\u0438\u0439 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0434\u0430.<\/strong> \u041d\u0435 \u043c\u0438\u0444. \u041e\u0442 \u00ab\u0437\u043d\u0430\u044e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u00bb \u0434\u043e \u00ab\u043f\u0438\u0448\u0443 production-\u043a\u043e\u0434 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u00bb \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 6-18 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b. \u041d\u0435 \u0443 \u0432\u0441\u0435\u0445 \u0435\u0441\u0442\u044c \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u043d\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0442\u0438\u0432 Rust. \u042d\u0442\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0442\u0438\u0432 \u0438\u043b\u043b\u044e\u0437\u0438\u0439.<\/p>\n<h3>Crate-\u0437\u0430\u043c\u0435\u043d\u044b \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0448\u044c \u0438\u0437 Python, Node \u0438\u043b\u0438 Go &#8212; \u0432\u043e\u0442 \u0448\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0430 \u043f\u043e \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0417\u0430\u043c\u0435\u043d\u0430 \u0432 Rust<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">requests (Python)<\/p>\n<\/td>\n<td>\n<p align=\"left\">reqwest<\/p>\n<\/td>\n<td>\n<p align=\"left\">API \u0431\u043b\u0438\u0437\u043a\u043e\u0435, async \u0438 sync \u0440\u0435\u0436\u0438\u043c\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">httpx<\/p>\n<\/td>\n<td>\n<p align=\"left\">reqwest<\/p>\n<\/td>\n<td>\n<p align=\"left\">+ \u0440\u0443\u0447\u043d\u043e\u0439 <code>hyper<\/code> \u0434\u043b\u044f \u0442\u043e\u043d\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">pandas<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/pola-rs\/polars\" rel=\"noopener noreferrer nofollow\">polars<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0427\u0430\u0441\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 pandas \u0432 5-30 \u0440\u0430\u0437<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">numpy<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/rust-ndarray\/ndarray\" rel=\"noopener noreferrer nofollow\">ndarray<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041c\u0435\u043d\u0435\u0435 \u044d\u0440\u0433\u043e\u043d\u043e\u043c\u0438\u0447\u043d\u044b\u0439, \u043d\u043e \u0440\u0430\u0431\u043e\u0447\u0438\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">FastAPI \/ Flask<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/tokio-rs\/axum\" rel=\"noopener noreferrer nofollow\">axum<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 async<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Django<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/loco.rs\/\" rel=\"noopener noreferrer nofollow\">loco<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041c\u043e\u043b\u043e\u0434\u043e\u0439, \u043d\u043e \u0441\u0430\u043c\u044b\u0439 \u00ab\u0431\u044d\u0442\u0442\u0435\u0440\u0438\u0437-\u0438\u043d\u043a\u043b\u0443\u0434\u0435\u0434\u00bb<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">pytest<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>#[test]<\/code> + <a href=\"https:\/\/github.com\/mitsuhiko\/insta\" rel=\"noopener noreferrer nofollow\">insta<\/a> + <a href=\"https:\/\/github.com\/proptest-rs\/proptest\" rel=\"noopener noreferrer nofollow\">proptest<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0432 <code>cargo test<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">SQLAlchemy<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/launchbadge\/sqlx\" rel=\"noopener noreferrer nofollow\">sqlx<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/www.sea-ql.org\/SeaORM\/\" rel=\"noopener noreferrer nofollow\">sea-orm<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">sqlx \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 SQL \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Celery<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/geofmureithi\/apalis\" rel=\"noopener noreferrer nofollow\">apalis<\/a>, <a href=\"https:\/\/github.com\/jonhoo\/faktory-rs\" rel=\"noopener noreferrer nofollow\">faktory<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041c\u043e\u043b\u043e\u0434\u0430\u044f \u043d\u0438\u0448\u0430, \u0440\u0430\u0431\u043e\u0447\u0430\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">express (Node)<\/p>\n<\/td>\n<td>\n<p align=\"left\">axum, <a href=\"https:\/\/github.com\/actix\/actix-web\" rel=\"noopener noreferrer nofollow\">actix-web<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Actix \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, axum \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0435\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Socket.IO<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/snapview\/tokio-tungstenite\" rel=\"noopener noreferrer nofollow\">tokio-tungstenite<\/a>, <a href=\"https:\/\/docs.rs\/axum-extra\/\" rel=\"noopener noreferrer nofollow\">axum-extra ws<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">WebSocket \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Redis client<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/redis-rs\/redis-rs\" rel=\"noopener noreferrer nofollow\">redis-rs<\/a>, <a href=\"https:\/\/github.com\/aembke\/fred.rs\" rel=\"noopener noreferrer nofollow\">fred<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">fred \u043c\u043e\u043b\u043e\u0436\u0435, \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0434\u043b\u044f cluster<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Kafka client<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/fede1024\/rust-rdkafka\" rel=\"noopener noreferrer nofollow\">rdkafka<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u0438\u043d\u0434\u0438\u043d\u0433\u0438 \u043a librdkafka, \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">gRPC<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/hyperium\/tonic\" rel=\"noopener noreferrer nofollow\">tonic<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 tokio, \u0434\u0435-\u0444\u0430\u043a\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">logrus \/ pino<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/tokio-rs\/tracing\" rel=\"noopener noreferrer nofollow\">tracing<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u043e\u0433\u0438, \u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Cobra (Go)<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/clap-rs\/clap\" rel=\"noopener noreferrer nofollow\">clap<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041b\u0443\u0447\u0448\u0438\u0439 CLI-\u043f\u0430\u0440\u0441\u0435\u0440 \u0432 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438, \u0431\u0435\u0437 \u043f\u0440\u0435\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Docker SDK<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/fussybeaver\/bollard\" rel=\"noopener noreferrer nofollow\">bollard<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043e\u043b\u043d\u043e\u0435 API Docker<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">boto3 (AWS)<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/awslabs\/aws-sdk-rust\" rel=\"noopener noreferrer nofollow\">aws-sdk-rust<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 SDK, \u0432 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0444\u0430\u0437\u0435<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>Rust \u0438 AI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432 2026<\/h3>\n<p>LLM-\u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a\u0438 \u0441\u0438\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 Rust \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u0433\u043e\u0434\u0430. \u041a\u0430\u0440\u0442\u0438\u043d\u0430 \u043f\u043e \u043c\u043e\u0435\u043c\u0443 \u043e\u043f\u044b\u0442\u0443 \u0442\u0430\u043a\u0430\u044f:<\/p>\n<ul>\n<li>\n<p><strong>\u0413\u0434\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442.<\/strong> Boilerplate, \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f <code>impl<\/code> \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0442\u0440\u0435\u0439\u0442\u043e\u0432, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u043c\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432, \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432. \u041d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430\u0445 \u0443\u0440\u043e\u0432\u043d\u044f \u00ab\u043d\u0430\u043f\u0438\u0448\u0438 axum-\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 X\u00bb \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p><strong>\u0413\u0434\u0435 \u0432\u0440\u0443\u0442.<\/strong> Async-\u0442\u0440\u0435\u0439\u0442\u044b, lifetimes \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 coherence \u0434\u043b\u044f \u0442\u0440\u0435\u0439\u0442\u043e\u0432, \u043d\u043e\u0432\u044b\u0435 \u0444\u0438\u0447\u0438 \u044f\u0437\u044b\u043a\u0430 (GAT, async closures), \u043c\u0430\u043a\u0440\u043e\u0441\u044b \u0438\u0437 \u043c\u0430\u043b\u043e\u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043a\u0440\u0435\u0439\u0442\u043e\u0432. \u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e \u043f\u0438\u0448\u0435\u0442 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0438 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0441\u0430\u043c\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u044d\u0442\u043e \u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c \u0441 \u0442\u0440\u0451\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a.<\/p>\n<\/li>\n<li>\n<p><strong>\u0427\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/strong> \u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 (Claude, GPT, Gemini \u0432\u0435\u0440\u0445\u043d\u0438\u0445 \u043b\u0438\u043d\u0435\u0435\u043a) \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441 Rust, \u0447\u0435\u043c \u043b\u0438\u043d\u0435\u0439\u043a\u0438 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f. \u041d\u043e borrow checker \u0432\u0441\u0451 \u0435\u0449\u0451 \u0441\u043b\u0430\u0431\u0430\u044f \u0437\u043e\u043d\u0430: \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043f\u043e\u0447\u0438\u043d\u043a\u0438 lifetime-\u043e\u0448\u0438\u0431\u043a\u0438, \u0438 \u0442\u0440\u0438 \u0438\u0437 \u043d\u0438\u0445 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f.<\/p>\n<\/li>\n<\/ul>\n<h4>IDE-\u0430\u0433\u0435\u043d\u0442\u044b \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0447\u0430\u0442\u043e\u0432<\/h4>\n<p>Cursor, Continue, Zed-\u0430\u0433\u0435\u043d\u0442\u044b \u0438 rust-analyzer + LLM \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043d\u0430 Rust \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0447\u0430\u0442\u043e\u0432\u044b\u0445 LLM. \u041f\u0440\u0438\u0447\u0438\u043d\u044b \u0434\u0432\u0435: \u043e\u043d\u0438 \u0432\u0438\u0434\u044f\u0442 \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442 (\u0430 \u043d\u0435 \u043e\u0434\u0438\u043d \u0441\u043d\u0438\u043f\u043f\u0435\u0442 \u0432 \u043e\u043a\u043d\u0435 \u0447\u0430\u0442\u0430) \u0438 \u0447\u0438\u0442\u0430\u044e\u0442 \u0432\u044b\u0432\u043e\u0434 <code>cargo check<\/code> \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0440\u0430\u0432\u043a\u0438. \u042d\u0442\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u043b\u0430\u0431\u043e\u0441\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0430 Rust &#8212; \u043d\u0435\u0437\u043d\u0430\u043d\u0438\u0435 \u0442\u043e\u0447\u043d\u043e\u0433\u043e API \u043a\u0440\u0435\u0439\u0442\u043e\u0432 \u0432 \u0442\u0432\u043e\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u041a 2026 \u0433\u043e\u0434\u0443 \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0440\u0430\u0431\u043e\u0442\u044b, \u0430 \u043d\u0435 \u044d\u043a\u0437\u043e\u0442\u0438\u043a\u0430.<\/p>\n<h4>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0446\u0435\u043f\u0442<\/h4>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 LLM \u043a\u0430\u043a \u00abjunior, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0438\u0448\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u043d\u0430\u0431\u0440\u043e\u0441\u043e\u043a\u00bb, \u043d\u0435 \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442. \u0412\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439 <code>cargo check<\/code> \u0438 <code>cargo clippy<\/code> \u043d\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435. \u041d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0439 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u043c \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u0442\u0435\u043c\u0443, \u043f\u043e\u0447\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u00ab\u0434\u043e\u043b\u0436\u0435\u043d\u00bb \u044d\u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c.<\/p>\n<p>\u0412 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435 \u0432\u0441\u0451 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u043b\u0443\u0447\u0448\u0430\u0442\u044c\u0441\u044f. \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u044b\u0432\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e\u0439: Rust \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f, LLM \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0435\u0433\u043e, \u043e\u043d\u0430 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0440\u0443\u0442\u0438\u043d\u0443.<\/p>\n<h3>\u0414\u0435\u043d\u044c\u0433\u0438: \u0432\u0438\u043b\u043a\u0438 \u0437\u0430\u0440\u043f\u043b\u0430\u0442 \u0438 \u0440\u044b\u043d\u043e\u043a<\/h3>\n<p>\u041e\u0433\u043e\u0432\u043e\u0440\u043a\u0430: \u0446\u0438\u0444\u0440\u044b \u043d\u0438\u0436\u0435 &#8212; \u0443\u0441\u0440\u0435\u0434\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0432\u0438\u043b\u043a\u0430\u043c, \u043e\u043f\u0440\u043e\u0441\u0430\u043c Stack Overflow \u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u0441 \u043a\u043e\u043d\u0446\u0430 2024 &#8212; \u043d\u0430\u0447\u0430\u043b\u0430 2026. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0443 \u0442\u0435\u0431\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u043b\u0443\u0447\u0448\u0435, \u0442\u0430\u043a \u0438 \u0445\u0443\u0436\u0435.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0420\u0435\u0433\u0438\u043e\u043d<\/p>\n<\/th>\n<th>\n<p align=\"left\">Junior<\/p>\n<\/th>\n<th>\n<p align=\"left\">Middle<\/p>\n<\/th>\n<th>\n<p align=\"left\">Senior<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0420\u043e\u0441\u0441\u0438\u044f (\u0443\u0434\u0430\u043b\u0451\u043d\u043a\u0430)<\/p>\n<\/td>\n<td>\n<p align=\"left\">150-250k \u0440\u0443\u0431\/\u043c\u0435\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">300-500k \u0440\u0443\u0431\/\u043c\u0435\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">500-800k+ \u0440\u0443\u0431\/\u043c\u0435\u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u043e\u0441\u0442\u043e\u0447\u043d\u0430\u044f \u0415\u0432\u0440\u043e\u043f\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">2-3k EUR\/\u043c\u0435\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">4-6k EUR\/\u043c\u0435\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">7-10k+ EUR\/\u043c\u0435\u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0417\u0430\u043f\u0430\u0434\u043d\u0430\u044f \u0415\u0432\u0440\u043e\u043f\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">50-70k EUR\/\u0433\u043e\u0434<\/p>\n<\/td>\n<td>\n<p align=\"left\">80-120k EUR\/\u0433\u043e\u0434<\/p>\n<\/td>\n<td>\n<p align=\"left\">130-200k+ EUR\/\u0433\u043e\u0434<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0428\u0410 (remote, mid-market)<\/p>\n<\/td>\n<td>\n<p align=\"left\">110-140k USD\/\u0433\u043e\u0434<\/p>\n<\/td>\n<td>\n<p align=\"left\">150-200k USD\/\u0433\u043e\u0434<\/p>\n<\/td>\n<td>\n<p align=\"left\">220-350k+ USD\/\u0433\u043e\u0434<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0428\u0410 (Big Tech \/ crypto)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0440\u0435\u0434\u043a\u0438\u0439 junior<\/p>\n<\/td>\n<td>\n<p align=\"left\">200-300k USD\/\u0433\u043e\u0434<\/p>\n<\/td>\n<td>\n<p align=\"left\">350-600k+ USD\/\u0433\u043e\u0434 total comp<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u044b\u043d\u043a\u0430:<\/p>\n<ul>\n<li>\n<p>Junior-\u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u043c\u0430\u043b\u043e. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0445\u043e\u0442\u044f\u0442 \u0441\u0440\u0430\u0437\u0443 Middle \u0441 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u041f\u0443\u0442\u044c \u0447\u0435\u0440\u0435\u0437 pet-\u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0438 open source \u0434\u043b\u044f Rust \u0432\u0430\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u041a\u0440\u0438\u043f\u0442\u043e-\u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043b\u0430\u0442\u044f\u0442 \u0432\u0435\u0440\u0445\u043d\u044e\u044e \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u0432, \u043d\u043e \u0440\u0438\u0441\u043a\u0438 (\u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u044b\u043f\u043b\u0430\u0442, \u0440\u0435\u043f\u0443\u0442\u0430\u0446\u0438\u044f) \u0432\u044b\u0448\u0435. \u0412\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0434\u0430\u0442\u0435\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p>Embedded-Rust \u0438 core-\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0447\u0430\u0441\u0442\u043e \u043f\u043b\u0430\u0442\u044f\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 web-Rust, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435. \u0421\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u043d, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0434\u0443\u0442.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u0430\u043b\u0451\u043d\u043a\u0430 \u0434\u043b\u044f Rust \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u043e\u0440\u043c\u043e\u0439 \u0434\u0430\u0436\u0435 \u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u0431\u0449\u0438\u0439 \u0440\u044b\u043d\u043e\u043a \u043e\u0442\u043a\u0430\u0442\u0438\u043b\u0441\u044f \u043a \u0433\u0438\u0431\u0440\u0438\u0434\u0443.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0411\u0443\u0434\u043d\u0438 Rust-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<\/h3>\n<p>\u0425\u0430\u0439\u043f \u0432\u043e\u043a\u0440\u0443\u0433 \u044f\u0437\u044b\u043a\u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u043e Rust-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u043f\u0438\u0448\u0435\u0442 lock-free \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u0435\u0448-\u043b\u0438\u043d\u0438\u0438. \u0420\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u043a\u0443\u0447\u043d\u0435\u0435.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0442\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0448\u044c \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0442\u0430\u043a\u0438\u0435: \u043d\u043e\u0432\u0430\u044f \u0440\u0443\u0447\u043a\u0430 \u0432 HTTP-API, \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0441\u0445\u0435\u043c\u044b \u0411\u0414, \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f, \u043f\u043e\u0447\u0438\u043d\u043a\u0430 \u0444\u043b\u0430\u043a\u0430 \u0432 \u0442\u0435\u0441\u0442\u0430\u0445, \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430 retry-\u043b\u043e\u0433\u0438\u043a\u0438 \u0443 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e API-\u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e CRUD \u043d\u0430 axum + sqlx + tracing, \u0441 \u0442\u0435\u043c\u0438 \u0436\u0435 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438, \u0447\u0442\u043e \u0432 Python \u0438\u043b\u0438 Go.<\/p>\n<p>\u0413\u0434\u0435 Rust \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f:<\/p>\n<ul>\n<li>\n<p>\u041c\u0435\u043d\u044c\u0448\u0435 runtime-\u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u043e\u0432. \u0422\u043e, \u0447\u0442\u043e \u0432 Python \u043b\u043e\u0432\u0442\u0441\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u043e\u043c \u0432 \u043f\u0440\u043e\u0434\u0435, \u0432 Rust \u043b\u043e\u0432\u0438\u0442\u0441\u044f <code>cargo check<\/code>. \u042d\u0442\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0441\u0442\u0440\u0435\u0441\u0441.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u0434-\u0440\u0435\u0432\u044c\u044e \u0438\u0434\u0443\u0442 \u0434\u043e\u043b\u044c\u0448\u0435. Borrow checker \u0438 \u0442\u0438\u043f\u044b \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0440\u0435\u0432\u044c\u044e\u0435\u0440\u0430 \u0434\u0443\u043c\u0430\u0442\u044c \u043e \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 &#8212; \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u0435\u0435. <code>cargo update<\/code> \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u044f\u043d\u0443\u0442\u044c \u0447\u0430\u0441 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u0441 breaking changes.<\/p>\n<\/li>\n<li>\n<p>\u041c\u0435\u043d\u044c\u0448\u0435 \u00ab\u043f\u044f\u0442\u043d\u0438\u0447\u043d\u044b\u0445 \u0445\u043e\u0442\u0444\u0438\u043a\u0441\u043e\u0432\u00bb. \u0412 Rust \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u043a\u0430\u0442\u0438\u0442\u044c \u0433\u043e\u0440\u044f\u0447\u0443\u044e \u043f\u0440\u0430\u0432\u043a\u0443 \u0438 \u0443\u0434\u0438\u0432\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u0430 \u0447\u0430\u0449\u0435 \u0442\u044f\u0433\u043e\u0442\u0435\u0435\u0442 \u043a \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u043c\u0443 CI\/CD.<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0438\u0434\u0451\u0448\u044c \u0432 Rust \u0440\u0430\u0434\u0438 \u0445\u0430\u0440\u0434\u043a\u043e\u0440\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c &#8212; \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0440\u0430\u0437\u043e\u0447\u0430\u0440\u0443\u0435\u0448\u044c\u0441\u044f. \u0415\u0441\u043b\u0438 \u0438\u0434\u0451\u0448\u044c \u0440\u0430\u0434\u0438 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0431\u043e\u043b\u0438 \u0432 \u0434\u043e\u043b\u0433\u043e\u0441\u0440\u043e\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 &#8212; \u043f\u043e\u043f\u0430\u0434\u0451\u0448\u044c \u0442\u043e\u0447\u043d\u043e.<\/p>\n<h3>\u041a\u0430\u043a \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u0443\u044e Rust-\u0440\u0430\u0431\u043e\u0442\u0443<\/h3>\n<p>Junior-\u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u043c\u0430\u043b\u043e, \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u00ab\u043f\u0440\u0438\u0441\u043b\u0430\u0442\u044c \u0440\u0435\u0437\u044e\u043c\u0435 \u043d\u0430 50 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439\u00bb \u0432 Rust \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043b\u043e\u0445\u043e. \u0427\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<ul>\n<li>\n<p><strong>Pet-\u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0430 GitHub \u0432\u0430\u0436\u043d\u0435\u0435 \u043e\u043f\u044b\u0442\u0430.<\/strong> \u0412 \u0440\u0435\u0437\u044e\u043c\u0435 \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 &#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 2-3 \u044f\u0440\u043a\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441 CI, \u0438\u043c\u0435\u0442\u044c README \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u043a\u043e\u0434. \u042d\u0442\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 80% \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u0439 \u043d\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0433\u043e.<\/p>\n<\/li>\n<li>\n<p><strong>Open source \u043a\u0430\u043a \u043b\u0435\u0441\u0442\u043d\u0438\u0446\u0430.<\/strong> \u041e\u0434\u0438\u043d \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 PR \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043a\u0440\u0435\u0439\u0442 (tokio, axum, clap) \u0434\u0430\u0451\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0435\u0441\u0430, \u0447\u0435\u043c \u0434\u0438\u043f\u043b\u043e\u043c. Hiring-\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b \u044d\u0442\u0438 \u043a\u0440\u0435\u0439\u0442\u044b \u0437\u043d\u0430\u044e\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u0413\u0434\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0438:<\/strong> <a href=\"https:\/\/www.rust-lang.org\/governance\/teams\/community#Jobs\" rel=\"noopener noreferrer nofollow\">jobs.rust-lang.org<\/a>, <a href=\"https:\/\/rustjobs.dev\/\" rel=\"noopener noreferrer nofollow\">rustjobs.dev<\/a>, \u0440\u0430\u0437\u0434\u0435\u043b Jobs \u0432 <a href=\"https:\/\/this-week-in-rust.org\/\" rel=\"noopener noreferrer nofollow\">This Week in Rust<\/a>, GitHub Jobs (\u0444\u0438\u043b\u044c\u0442\u0440 Rust), hh.ru \u0438 LinkedIn (\u043f\u043e \u0442\u0435\u0433\u0430\u043c Rust + tokio\/axum\/sqlx).<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0442\u0430\u0436\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0433\u0440\u0430\u043d\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/strong> <a href=\"https:\/\/www.outreachy.org\/\" rel=\"noopener noreferrer nofollow\">Outreachy<\/a> \u0438 <a href=\"https:\/\/summerofcode.withgoogle.com\/\" rel=\"noopener noreferrer nofollow\">Google Summer of Code<\/a> \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0431\u0435\u0440\u0443\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u044b Rust-\u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u042d\u0442\u043e \u043b\u0435\u0433\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u043e\u043f\u044b\u0442\u0443 \u0431\u0435\u0437 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u043e\u0434\u0430\u0442\u0435\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 \u0438 \u043c\u0438\u0442\u0430\u043f\u044b.<\/strong> RustConf, RustFest, \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0438\u0442\u0430\u043f\u044b. \u041f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0445 \u043e\u0444\u0444\u0435\u0440\u043e\u0432 \u043d\u0430 Rust \u0432 \u0447\u0430\u0442\u0430\u0445 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 \u043f\u0440\u0438\u0448\u043b\u0430 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0442\u0432\u043e\u0440\u043a\u0438\u043d\u0433, \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0437\u044e\u043c\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u0424\u0440\u0438\u043b\u0430\u043d\u0441 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u0430\u043b\u0442\u0438\u043d\u0433.<\/strong> <a href=\"https:\/\/mainmatter.com\/\" rel=\"noopener noreferrer nofollow\">Mainmatter<\/a> (\u0431\u044b\u0432\u0448\u0430\u044f Ferrous Systems), <a href=\"https:\/\/tweedegolf.nl\/\" rel=\"noopener noreferrer nofollow\">Tweede golf<\/a>, <a href=\"https:\/\/www.embecosm.com\/\" rel=\"noopener noreferrer nofollow\">Embecosm<\/a> &#8212; \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439, \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0438\u0449\u0443\u0449\u0438\u0445 Rust-\u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u043d\u0442\u043e\u0432. \u041f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0434\u0430 \u0432\u044b\u0441\u043e\u043a\u0438\u0439, \u043d\u043e \u044d\u0442\u043e \u0448\u0430\u043d\u0441 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435: \u043f\u0435\u0440\u0432\u044b\u0439 Rust-\u043e\u0444\u0444\u0435\u0440 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0434\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 Python- \u0438\u043b\u0438 Go-\u043e\u0444\u0444\u0435\u0440. \u041d\u0430 \u044d\u0442\u043e \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0439\u0441\u044f.<\/p>\n<h3>\u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u043d\u0430 Rust \u0432 2026<\/h3>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0434\u043b\u044f \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438, \u043d\u043e \u0441 \u0430\u043a\u0446\u0435\u043d\u0442\u0430\u043c\u0438:<\/p>\n<ol>\n<li>\n<p><strong>\u0421\u043a\u0440\u0438\u043d\u0438\u043d\u0433.<\/strong> \u041b\u0451\u0433\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b + 2-3 \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u043f\u043e \u044f\u0437\u044b\u043a\u0443 (ownership, traits, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a).<\/p>\n<\/li>\n<li>\n<p><strong>\u041b\u0430\u0439\u0432-\u043a\u043e\u0434\u0438\u043d\u0433.<\/strong> \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u044f\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u0430 50-100 \u0441\u0442\u0440\u043e\u043a \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 &#8212; \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434, \u0430 \u043a\u0430\u043a \u0442\u044b \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0430\u0435\u0448\u044c \u0438 \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0448\u044c \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0434\u0438\u0437\u0430\u0439\u043d.<\/strong> \u0421\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438: tokio, axum, sqlx. \u0413\u043e\u0442\u043e\u0432\u044c\u0441\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0448\u044c <code>Arc&lt;Mutex&gt;<\/code> vs \u043a\u0430\u043d\u0430\u043b, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u0435\u0448\u044c backpressure, \u043a\u0430\u043a \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u0448\u044c graceful shutdown.<\/p>\n<\/li>\n<li>\n<p><strong>\u0413\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u0440\u0430\u0437\u0431\u043e\u0440.<\/strong> \u0418\u043d\u043e\u0433\u0434\u0430 \u0434\u0430\u044e\u0442 \u043a\u043e\u0434 \u0441 \u0431\u0430\u0433\u043e\u043c \u0438 \u043f\u0440\u043e\u0441\u044f\u0442 \u0435\u0433\u043e \u043d\u0430\u0439\u0442\u0438. \u041a\u043b\u0430\u0441\u0441\u0438\u043a\u0430 &#8212; \u0443\u0442\u0435\u0447\u043a\u0430 <code>Arc<\/code>-\u0446\u0438\u043a\u043b\u0430, dead lock \u043d\u0430 <code>Mutex<\/code>, \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f cancellation safety \u0432 <code>select!<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e.<\/strong> \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435, \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u043e\u0433\u043e \u0434\u043b\u044f Rust.<\/p>\n<\/li>\n<\/ol>\n<p>\u0427\u0442\u043e \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e: <code>Send<\/code> vs <code>Sync<\/code>, <code>Box<\/code> vs <code>Rc<\/code> vs <code>Arc<\/code>, <code>?Sized<\/code>, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <code>async fn<\/code>, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 <code>Pin<\/code> \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u043d\u0443\u0436\u0435\u043d. \u041d\u0430 senior+ &#8212; \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0430\u043c\u044f\u0442\u0438, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p>\u0427\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435: 1-2 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u0435\u0448\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c 20 \u043c\u0438\u043d\u0443\u0442 \u0441 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u043c\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438. \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0439\u0442\u0438 middle+ \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<h3>\u0410\u043d\u0442\u0438-FAQ<\/h3>\n<p>\u0421\u0430\u043c\u044b\u0435 \u0447\u0430\u0441\u0442\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043e\u0442 \u0442\u0435\u0445, \u043a\u0442\u043e \u0434\u0443\u043c\u0430\u0435\u0442, \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u043b\u0438:<\/p>\n<ul>\n<li>\n<p><strong>\u0421\u0442\u043e\u0438\u0442 \u043b\u0438 \u0443\u0447\u0438\u0442\u044c Rust \u043f\u0435\u0440\u0432\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f?<\/strong> \u0421\u043a\u043e\u0440\u0435\u0435 \u043d\u0435\u0442. \u041a\u0440\u0438\u0432\u0430\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043a\u0440\u0443\u0442\u0430\u044f, \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 (ownership, lifetimes) \u043f\u0440\u043e\u0449\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u044b\u0442\u0430 \u0441 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0432 C \u0438\u043b\u0438 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u043e\u043c \u043c\u0443\u0441\u043e\u0440\u0430 \u0432 Java\/Python. \u0412\u043e\u0437\u044c\u043c\u0438 Python \u0438\u043b\u0438 Go \u043f\u0435\u0440\u0432\u044b\u043c, \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0433\u043e\u0434\u0430-\u0433\u043e\u0434 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438 \u043d\u0430 Rust.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0442\u043e\u0438\u0442 \u043b\u0438 \u0443\u0447\u0438\u0442\u044c Rust \u043f\u043e\u0441\u043b\u0435 Python \u0434\u043b\u044f \u0431\u044d\u043a\u0435\u043d\u0434\u0430?<\/strong> \u0417\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0437\u0430\u0434\u0430\u0447. \u0415\u0441\u043b\u0438 \u0443 \u0442\u0435\u0431\u044f CRUD \u0431\u0435\u0437 \u0436\u0451\u0441\u0442\u043a\u0438\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043a \u043b\u0430\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 &#8212; Python \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u0435\u0435. \u0415\u0441\u043b\u0438 \u0443\u043f\u0438\u0440\u0430\u0435\u0448\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u0445\u043e\u0447\u0435\u0448\u044c \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 &#8212; \u0434\u0430, \u0442\u043e\u0433\u0434\u0430 Rust \u043e\u043a\u0443\u043f\u0438\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0442\u043e\u0438\u0442 \u043b\u0438 \u0443\u0447\u0438\u0442\u044c Rust \u043f\u043e\u0441\u043b\u0435 C++?<\/strong> \u0421\u043a\u043e\u0440\u0435\u0435 \u0434\u0430. \u042d\u0442\u043e \u0442\u0432\u043e\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e: \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u0442\u044b \u0443\u0436\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c, \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0440\u0438\u043d\u044f\u0442\u044c borrow checker \u0438 async-\u043c\u043e\u0434\u0435\u043b\u044c. \u041c\u043d\u043e\u0433\u0438\u0435 C+\u00b1\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0447\u0442\u043e Rust \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u0438\u0445 \u0438 C+\u00b1\u043a\u043e\u0434 \u0432 \u043b\u0443\u0447\u0448\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0442\u043e\u0438\u0442 \u043b\u0438 \u0443\u0447\u0438\u0442\u044c Rust \u0434\u043b\u044f game dev?<\/strong> \u0417\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0446\u0435\u043b\u0435\u0439. \u0414\u043b\u044f \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u0443\u0434\u0438\u0438 &#8212; \u043d\u0435\u0442, \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u044f \u043d\u0430 Unreal \u0438 Unity. \u0414\u043b\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 \u0438\u043b\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 Bevy &#8212; \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u0438 \u043d\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0442\u043e\u0438\u0442 \u043b\u0438 \u0443\u0447\u0438\u0442\u044c Rust \u0434\u043b\u044f ML?<\/strong> \u042f\u0434\u0440\u043e ML \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u0430 Python (PyTorch, JAX). \u041d\u043e \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441-\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0442\u043e\u043a\u0435\u043d\u0430\u0439\u0437\u0435\u0440\u044b, \u0441\u0435\u0440\u0432\u0438\u043d\u0433 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 &#8212; \u0432\u0441\u0451 \u0447\u0430\u0449\u0435 \u043d\u0430 Rust, \u0438 \u044d\u0442\u043e \u0440\u0430\u0441\u0442\u0443\u0449\u0430\u044f \u043d\u0438\u0448\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0442\u043e\u0438\u0442 \u043b\u0438 \u0443\u0447\u0438\u0442\u044c Rust \u0440\u0430\u0434\u0438 \u0437\u0430\u0440\u043f\u043b\u0430\u0442\u044b?<\/strong> \u0421\u0442\u043e\u0438\u0442, \u043d\u043e \u043d\u0435 \u043a\u0430\u043a \u0441\u0430\u043c\u043e\u0446\u0435\u043b\u044c. Rust-\u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439 \u043c\u0430\u043b\u043e, \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044f \u0437\u0430 \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0436\u0451\u0441\u0442\u043a\u0430\u044f, junior-\u0440\u043e\u043b\u0438 \u0432 \u0434\u0435\u0444\u0438\u0446\u0438\u0442\u0435. \u0415\u0441\u043b\u0438 \u0443\u0447\u0438\u0448\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437-\u0437\u0430 \u0434\u0435\u043d\u0435\u0433 &#8212; \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, Go \u0434\u0430\u0441\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0439\u043c\u0451\u0442 \u0441\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u044b\u043c?<\/strong> \u0414\u043e \u00ab\u043c\u043e\u0433\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043e\u0434\u00bb &#8212; 2-3 \u043c\u0435\u0441\u044f\u0446\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438. \u0414\u043e \u00ab\u0431\u0435\u0440\u0443 \u0441 \u0443\u043b\u0438\u0446\u044b middle-\u0437\u0430\u0434\u0430\u0447\u0443 \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e \u0435\u0451\u00bb &#8212; 9-18 \u043c\u0435\u0441\u044f\u0446\u0435\u0432. \u0414\u043e senior &#8212; \u0433\u043e\u0434\u044b.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0427\u0442\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c<\/h3>\n<p>\u0421 \u043f\u043e\u043c\u0435\u0442\u043a\u0430\u043c\u0438 \u043e\u0442 \u043c\u0435\u043d\u044f &#8212; \u0447\u0442\u043e \u043a\u043e\u043c\u0443 \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442.<\/p>\n<p><strong>\u041a\u043d\u0438\u0433\u0438:<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/doc.rust-lang.org\/book\/\" rel=\"noopener noreferrer nofollow\">The Rust Programming Language<\/a> &#8212; \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433. \u0415\u0441\u043b\u0438 \u0442\u044b \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u0435\u0451 \u0438 \u043f\u043e\u043d\u044f\u043b \u0433\u043b\u0430\u0432\u044b 4 \u0438 10 &#8212; \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u0439\u0434\u0451\u0442 \u043b\u0435\u0433\u0447\u0435.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.oreilly.com\/library\/view\/programming-rust-2nd\/9781492052586\/\" rel=\"noopener noreferrer nofollow\">Programming Rust (Blandy, Orendorff, Tindall)<\/a> &#8212; \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u0443\u0447\u0435\u0431\u043d\u0438\u043a, \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0442\u0435\u043c, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c \u00ab\u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u00bb. \u0421\u0442\u043e\u0438\u0442 \u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 Rust Book.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/nostarch.com\/rust-rustaceans\" rel=\"noopener noreferrer nofollow\">Rust for Rustaceans (Jon Gjengset)<\/a> &#8212; \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0443\u0436\u0435 \u043f\u0438\u0448\u0435\u0442 \u043d\u0430 Rust \u043f\u043e\u043b\u0433\u043e\u0434\u0430 \u0438 \u0445\u043e\u0447\u0435\u0442 \u0434\u043e\u0439\u0442\u0438 \u0434\u043e senior. \u041d\u0435 \u0443\u0447\u0435\u0431\u043d\u0438\u043a, \u0430 \u0441\u0431\u043e\u0440\u043d\u0438\u043a \u0442\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0434\u043a\u043e \u043f\u0440\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u044e\u0442 \u0432\u0441\u043b\u0443\u0445.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/marabos.nl\/atomics\/\" rel=\"noopener noreferrer nofollow\">Rust Atomics and Locks (Mara Bos)<\/a> &#8212; \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u043e\u043d\u043b\u0430\u0439\u043d, \u043b\u0443\u0447\u0448\u0430\u044f \u043a\u043d\u0438\u0433\u0430 \u043f\u0440\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 concurrency \u043d\u0430 Rust. \u041c\u0430\u0441\u0442-\u0440\u0438\u0434 \u043f\u0435\u0440\u0435\u0434 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0439 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043a\u043e\u0439.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.zero2prod.com\/\" rel=\"noopener noreferrer nofollow\">Zero to Production in Rust (Luca Palmieri)<\/a> &#8212; \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043a\u043d\u0438\u0433\u0430, \u0432\u0435\u0434\u0451\u0442 \u043e\u0442 \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0434\u043e \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441 CI, \u0411\u0414, \u0442\u0435\u0441\u0442\u0430\u043c\u0438. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043e\u0441\u043b\u0435 Rust Book.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435 \u043e\u043d\u043b\u0430\u0439\u043d-\u0440\u0435\u0441\u0443\u0440\u0441\u044b:<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/doc.rust-lang.org\/rust-by-example\/\" rel=\"noopener noreferrer nofollow\">Rust by Example<\/a> &#8212; \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0439.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/rust-lang\/rustlings\" rel=\"noopener noreferrer nofollow\">Rustlings<\/a> &#8212; \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u0435\u0441\u044f\u0446\u0430.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/doc.rust-lang.org\/nomicon\/\" rel=\"noopener noreferrer nofollow\">The Rustonomicon<\/a> &#8212; \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u043e\u043b\u0435\u0437 \u0432 unsafe.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/tokio.rs\/tokio\/tutorial\" rel=\"noopener noreferrer nofollow\">Tokio Tutorial<\/a> &#8212; \u043b\u0443\u0447\u0448\u0438\u0439 \u0432\u0445\u043e\u0434 \u0432 async.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/veykril.github.io\/tlborm\/\" rel=\"noopener noreferrer nofollow\">The Little Book of Rust Macros<\/a> &#8212; \u043c\u0430\u043a\u0440\u043e\u0441\u044b.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/google.github.io\/comprehensive-rust\/\" rel=\"noopener noreferrer nofollow\">Comprehensive Rust<\/a> &#8212; \u043a\u0443\u0440\u0441 \u043e\u0442 Google.<\/p>\n<\/li>\n<\/ul>\n<p><strong>YouTube-\u043a\u0430\u043d\u0430\u043b\u044b:<\/strong><\/p>\n<ul>\n<li>\n<p>Jon Gjengset &#8212; \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0438\u043c\u044b \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043a\u0440\u0435\u0439\u0442\u043e\u0432 \u0438\u0437\u043d\u0443\u0442\u0440\u0438. \u0421\u0430\u043c\u044b\u0439 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 Rust-\u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0430 YouTube.<\/p>\n<\/li>\n<li>\n<p>Let\u2019s Get Rusty &#8212; \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u044b, \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>No Boilerplate &#8212; \u0438\u0434\u0435\u0438 \u0438 \u043e\u0431\u0437\u043e\u0440\u044b, \u043d\u0435 \u0443\u0447\u0435\u0431\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u0440\u0443\u0433\u043e\u0437\u043e\u0440\u0430.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0420\u0430\u0441\u0441\u044b\u043b\u043a\u0438 \u0438 \u043f\u043e\u0434\u043a\u0430\u0441\u0442\u044b:<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/this-week-in-rust.org\/\" rel=\"noopener noreferrer nofollow\">This Week in Rust<\/a> &#8212; \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0435\u0436\u0435\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0430.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/rustacean-station.org\/\" rel=\"noopener noreferrer nofollow\">Rustacean Station<\/a> &#8212; \u043f\u043e\u0434\u043a\u0430\u0441\u0442 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c:<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/serde-rs\/serde\" rel=\"noopener noreferrer nofollow\">serde<\/a> &#8212; \u0447\u0438\u0441\u0442\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 traits \u0438 generics;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/tokio-rs\/tokio\" rel=\"noopener noreferrer nofollow\">tokio<\/a> &#8212; \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 async-runtime;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/BurntSushi\/ripgrep\" rel=\"noopener noreferrer nofollow\">ripgrep<\/a> &#8212; \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 CLI \u0441 \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/clap-rs\/clap\" rel=\"noopener noreferrer nofollow\">clap<\/a> &#8212; \u044d\u0442\u0430\u043b\u043e\u043d \u0440\u0430\u0431\u043e\u0442\u044b \u0441 procedural-\u043c\u0430\u043a\u0440\u043e\u0441\u0430\u043c\u0438.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0413\u0434\u0435 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f: \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e<\/h3>\n<p>Rust &#8212; \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0437\u0434\u043e\u0440\u043e\u0432\u044b\u0445 tech-\u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438 \u0432 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438, \u0438 \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043d\u0451\u043c \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p><strong>\u041c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f:<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.reddit.com\/r\/rust\/\" rel=\"noopener noreferrer nofollow\">r\/rust<\/a> &#8212; reddit-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u043d\u0430 \u043b\u044e\u0431\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/users.rust-lang.org\/\" rel=\"noopener noreferrer nofollow\">users.rust-lang.org<\/a> &#8212; \u0444\u043e\u0440\u0443\u043c \u0434\u043b\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e \u044f\u0437\u044b\u043a\u0443.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/internals.rust-lang.org\/\" rel=\"noopener noreferrer nofollow\">internals.rust-lang.org<\/a> &#8212; \u0444\u043e\u0440\u0443\u043c \u0434\u043b\u044f \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u044f\u0437\u044b\u043a\u0430 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/rust-lang.zulipchat.com\/\" rel=\"noopener noreferrer nofollow\">Rust Zulip<\/a> &#8212; \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0447\u0430\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u044f\u0437\u044b\u043a\u0430. \u0417\u0434\u0435\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b compiler\/lang\/libs.<\/p>\n<\/li>\n<li>\n<p>Discord rust-lang &#8212; \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b \u043f\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u044d\u043a Stack Overflow \u0441 \u0442\u0435\u0433\u043e\u043c rust &#8212; \u0430\u0440\u0445\u0438\u0432\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u043e\u0442\u0432\u0435\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0420\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0435:<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/t.me\/+HelhY88sArowYjgy\" rel=\"noopener noreferrer nofollow\">Telegram-\u043a\u0430\u043d\u0430\u043b Rust | \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/t.me\/rust_chats\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0442 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0445 Rust-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/vk.com\/rust_it\" rel=\"noopener noreferrer nofollow\">\u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0412\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u0435 \u043e Rust \u0435\u0441\u043b\u0438 \u0441 \u0442\u0433 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b <\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u043e\u0432\u0435\u0442: \u0437\u0430\u0434\u0430\u0432\u0430\u0439 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u0448\u043d\u043e. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0437\u0430\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0437\u0430 \u0447\u0430\u0441, \u043f\u043b\u043e\u0445\u043e \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 &#8212; \u043d\u0435 \u0437\u0430\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430.<\/p>\n<h3>\u0427\u0435\u043a-\u043b\u0438\u0441\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u0440\u0442\u0444\u043e\u043b\u0438\u043e<\/h3>\n<p>\u041a \u043a\u043e\u043d\u0446\u0443 roadmap\u2019\u0430 \u0443 \u0442\u0435\u0431\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b 12 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432: \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438 11 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<\/p>\n<ol start=\"0\">\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 dev-env: rustup, rust-analyzer, \u0448\u0430\u0431\u043b\u043e\u043d <code>Cargo.toml<\/code> \u0438 <code>.cargo\/config.toml<\/code>, \u0433\u043e\u0442\u043e\u0432\u044b\u0439 CI-workflow (\u044d\u0442\u0430\u043f 0).<\/p>\n<\/li>\n<li>\n<p>CLI-\u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u0438\u043b\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 \u0435\u0434\u0438\u043d\u0438\u0446 (\u044d\u0442\u0430\u043f 1).<\/p>\n<\/li>\n<li>\n<p>\u0421\u0432\u043e\u0439 <code>Vec<\/code> \u0438\u043b\u0438 \u043e\u0434\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a (\u044d\u0442\u0430\u043f 2).<\/p>\n<\/li>\n<li>\n<p>\u041c\u0438\u043d\u0438-ORM-\u0431\u0438\u043b\u0434\u0435\u0440 \u0438\u043b\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 (\u044d\u0442\u0430\u043f 3).<\/p>\n<\/li>\n<li>\n<p>CLI-\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0441 \u0442\u0435\u0441\u0442\u0430\u043c\u0438, CI \u0438 \u0442\u0438\u043f-\u043e\u0431\u0451\u0440\u0442\u043a\u043e\u0439 \u043d\u0430\u0434 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 (\u044d\u0442\u0430\u043f 4).<\/p>\n<\/li>\n<li>\n<p>\u0413\u0440\u0430\u0444\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441 \u043e\u0431\u0445\u043e\u0434\u0430\u043c\u0438 (\u044d\u0442\u0430\u043f 5).<\/p>\n<\/li>\n<li>\n<p>\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 word-counter \u0447\u0435\u0440\u0435\u0437 rayon \u0438 crossbeam (\u044d\u0442\u0430\u043f 6).<\/p>\n<\/li>\n<li>\n<p>HTTP-\u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0430 axum + Redis + Postgres \u0441 tracing (\u044d\u0442\u0430\u043f 7).<\/p>\n<\/li>\n<li>\n<p>Derive-\u043c\u0430\u043a\u0440\u043e\u0441 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Builder) \u043d\u0430 <code>syn<\/code>\/<code>quote<\/code> (\u044d\u0442\u0430\u043f 8).<\/p>\n<\/li>\n<li>\n<p>Safe-\u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 C-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 bindgen (\u044d\u0442\u0430\u043f 9).<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u0440\u0435\u0439\u0442 \u043d\u0430 crates.io (\u044d\u0442\u0430\u043f 10).<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f Future \u0440\u0443\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442 \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043a\u0440\u0435\u0439\u0442 (\u044d\u0442\u0430\u043f 11).<\/p>\n<\/li>\n<\/ol>\n<p>\u042d\u0442\u043e \u043d\u0435 \u00ab\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u00bb, \u0430 \u043a\u0430\u0440\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a. \u0415\u0441\u043b\u0438 \u0432 \u043f\u043e\u0440\u0442\u0444\u043e\u043b\u0438\u043e \u0447\u0435\u0433\u043e-\u0442\u043e \u043d\u0435\u0442 &#8212; \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442 \u0438 \u0432 \u0433\u043e\u043b\u043e\u0432\u0435.<\/p>\n<h3>\u041a\u0443\u0434\u0430 \u0438\u0434\u0442\u0438 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441<\/h3>\n<p>\u041e\u0434\u0438\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0433\u0434\u0435 \u0442\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0448\u044c\u0441\u044f:<\/p>\n<ul>\n<li>\n<p><strong>\u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0438\u0441\u0430\u043b \u043d\u0430 Rust.<\/strong> \u041e\u0442\u043a\u0440\u043e\u0439 <a href=\"https:\/\/doc.rust-lang.org\/book\/\" rel=\"noopener noreferrer nofollow\">The Rust Book<\/a> \u0438 \u0441\u0434\u0435\u043b\u0430\u0439 \u043f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0430 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f <a href=\"https:\/\/github.com\/rust-lang\/rustlings\" rel=\"noopener noreferrer nofollow\">Rustlings<\/a>. 30 \u043c\u0438\u043d\u0443\u0442 \u0441\u0435\u0433\u043e\u0434\u043d\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u043e\u0448\u0451\u043b Rust Book, \u043d\u0435 \u0437\u043d\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c.<\/strong> \u041d\u0430\u043f\u0438\u0448\u0438 CLI-\u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u043d\u0430 200-300 \u0441\u0442\u0440\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0430\u043c \u0431\u0443\u0434\u0435\u0448\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0438\u0448\u0435\u0448\u044c \u043f\u043e\u043b\u0433\u043e\u0434\u0430, \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0448\u044c \u0441\u0442\u0430\u0433\u043d\u0430\u0446\u0438\u044e.<\/strong> \u0412\u043e\u0437\u044c\u043c\u0438 <a href=\"https:\/\/nostarch.com\/rust-rustaceans\" rel=\"noopener noreferrer nofollow\">\u00abRust for Rustaceans\u00bb<\/a> \u0438 <a href=\"https:\/\/github.com\/tokio-rs\/tokio\" rel=\"noopener noreferrer nofollow\">tokio source<\/a>. \u0411\u0443\u0434\u0435\u0442 \u0442\u044f\u0436\u0435\u043b\u043e \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p><strong>\u0413\u043e\u0442\u043e\u0432\u0438\u0448\u044c\u0441\u044f \u043a \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e.<\/strong> \u041e\u0442\u043a\u0440\u043e\u0439 2-3 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 roadmap-\u0437\u0430\u0434\u0430\u0447\u0438 \u0432 <a href=\"https:\/\/github.com\/topics\/rust-leetcode\" rel=\"noopener noreferrer nofollow\">Rust LeetCode-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445<\/a>, \u043f\u043e\u0440\u0435\u0448\u0430\u0439 \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0432 \u0434\u0435\u043d\u044c \u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043f\u0438\u0448\u0438 short-summary \u0441\u0432\u043e\u0438\u0445 pet-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p><strong>\u0425\u043e\u0447\u0435\u0448\u044c open source.<\/strong> \u0420\u0430\u0437\u0434\u0435\u043b Call for Participation \u0432 <a href=\"https:\/\/this-week-in-rust.org\/\" rel=\"noopener noreferrer nofollow\">This Week in Rust<\/a>, \u0432\u044b\u0431\u0435\u0440\u0438 \u0437\u0430\u0434\u0430\u0447\u0443 \u0441 \u043c\u0435\u0442\u043a\u043e\u0439 good first issue \u0432 \u043a\u0440\u0435\u0439\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0448\u044c\u0441\u044f. \u0417\u0430\u043a\u0440\u043e\u0439 \u0435\u0451 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043d\u0435\u0434\u0435\u043b\u0438.<\/p>\n<\/li>\n<\/ul>\n<hr\/>\n<p>Rust \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0435\u0431\u044f \u043b\u0443\u0447\u0448\u0438\u043c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435. \u041d\u043e \u043e\u043d \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442 \u0434\u0443\u043c\u0430\u0442\u044c \u043e \u0432\u0435\u0449\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0434\u0430\u043c\u0438 &#8212; \u043f\u0440\u043e \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0438\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439. \u042d\u0442\u0430 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u043c \u043a\u043e\u0434\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u044b \u043f\u0438\u0448\u0435\u0448\u044c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>\u0415\u0441\u043b\u0438 roadmap \u0437\u0430\u0448\u0451\u043b &#8212; \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0441\u044f \u043d\u0430 <a href=\"https:\/\/t.me\/+HelhY88sArowYjgy\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u043d\u0430\u043b<\/a>, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0439 Rust \u0438 \u043a\u043e\u0434\u0438\u043d\u0433\u0443, \u0442\u0430\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u044b, \u0440\u0430\u0437\u0431\u043e\u0440\u044b \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u0438 \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u0441\u044f &#8212; \u043f\u0438\u0448\u0438 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u043f\u043e\u043f\u0440\u0430\u0432\u043b\u044e.<\/p>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e, \u0447\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b! \u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u0438 \u0441\u043e\u0432\u0435\u0442\u044b \u043f\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044e \u0420\u043e\u0430\u0434\u043c\u0430\u043f\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0432\u0443\u044e\u0442\u0441\u044f)<\/p>\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\/articles\/1033730\/\">https:\/\/habr.com\/ru\/articles\/1033730\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rust \u0434\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0431\u044b\u0442\u044c \u044f\u0437\u044b\u043a\u043e\u043c \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u043e\u0432. \u041d\u0430 \u043d\u0451\u043c \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u043a\u0443\u0441\u043a\u0438 \u044f\u0434\u0440\u0430 Linux, \u0434\u0432\u0438\u0436\u043a\u0438 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 (TiKV, Materialize, Polars), \u0431\u044d\u043a\u0435\u043d\u0434\u044b Cloudflare \u0438 Discord. \u041f\u043e\u0434 Rust \u043f\u0438\u0448\u0443\u0442 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043b\u044f ESP32 \u0438 STM32, \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0447\u0435\u0440\u0435\u0437 WebAssembly, \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM.Microsoft \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u0438 Windows, AWS \u0441\u0442\u0440\u043e\u0438\u0442 \u043d\u0430 Rust Firecracker \u0438 Bottlerocket, Google \u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 Android \u0438 \u0432 \u0434\u0435\u0440\u0435\u0432\u043e \u044f\u0434\u0440\u0430. \u041f\u043e \u0437\u0430\u0440\u043f\u043b\u0430\u0442\u0430\u043c Rust \u043f\u044f\u0442\u044b\u0439 \u0433\u043e\u0434 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0434\u0435\u0446\u0438\u043b\u0435 Stack Overflow Survey, \u0438 \u0441\u0435\u043c\u044c \u043b\u0435\u0442 \u043f\u043e\u0434\u0440\u044f\u0434 &#8212; \u0441\u0430\u043c\u044b\u0439 \u043b\u044e\u0431\u0438\u043c\u044b\u0439 \u044f\u0437\u044b\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.\u042f \u0432\u0435\u0434\u0443 github.com\/Develp10\/rust-roadmap-ru &#8212; \u0436\u0438\u0432\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0443\u0447\u0438\u0442\u044c. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f &#8212; \u0435\u0451 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438, \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u0438 \u043b\u0438\u0447\u043d\u044b\u043c \u043e\u043f\u044b\u0442\u043e\u043c.\u0427\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438\u041a\u0430\u0440\u0442\u0430 \u043f\u043e \u0443\u0440\u043e\u0432\u043d\u044f\u043c \u0438 \u043a\u043e\u0433\u0434\u0430 \u0431\u0440\u0430\u0442\u044c Rust\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u0435\u0441\u044f\u044612 \u044d\u0442\u0430\u043f\u043e\u0432 roadmap\u2019\u0430 \u043e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u0440\u043e\u0444\u0438\u0427\u0430\u0441\u0442\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0438 \u0441\u043b\u0430\u0431\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 Rust\u0414\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0432 rustc: \u043f\u0443\u0442\u044c \u0434\u043e \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430Crate-\u0437\u0430\u043c\u0435\u043d\u044b \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0441 Python\/Node\/Go\u0414\u0435\u043d\u044c\u0433\u0438, \u0431\u0443\u0434\u043d\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438 \u043a\u0430\u043a \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443\u0410\u043d\u0442\u0438-FAQ, \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e, \u043a\u043d\u0438\u0433\u0438 \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u0427\u0435\u043a-\u043b\u0438\u0441\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u043a\u0443\u0434\u0430 \u0438\u0434\u0442\u0438 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441\u041a\u0430\u0440\u0442\u0430 \u043f\u043e \u0443\u0440\u043e\u0432\u043d\u044f\u043c\u0423\u0440\u043e\u0432\u0435\u043d\u044c\u0427\u0442\u043e \u0443\u043c\u0435\u0435\u0448\u044c\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u041d\u043e\u0432\u0438\u0447\u043e\u043a\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, ownership \u043d\u0430 \u0438\u043d\u0442\u0443\u0438\u0446\u0438\u0438, \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b1-3 \u043c\u0435\u0441\u044f\u0446\u0430\u0423\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439Generics, traits, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a, \u0442\u0435\u0441\u0442\u044b, async \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 axum\/tokio6-12 \u043c\u0435\u0441\u044f\u0446\u0435\u0432Middle\u0421\u0432\u043e\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043a\u0430 \u0431\u0435\u0437 \u0431\u0430\u0433\u043e\u0432, \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 lifetimes, \u0447\u0443\u0436\u043e\u0439 \u043a\u043e\u0434 \u0447\u0438\u0442\u0430\u0435\u0448\u044c1-2 \u0433\u043e\u0434\u0430 \u0441 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, 2-3 \u0433\u043e\u0434\u0430 \u043d\u0430 \u0441\u0430\u043c\u043e\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438SeniorUnsafe \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e, FFI, \u043c\u0430\u043a\u0440\u043e\u0441\u044b, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0434 \u043a\u0435\u0448, debugging async-\u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u04392-4 \u0433\u043e\u0434\u0430 \u0432 production, \u0443 \u0441\u0430\u043c\u043e\u0443\u0447\u0435\u043a 4+\u041f\u0440\u043e\u0444\u0438\u041a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u044b \u0432 tokio\/serde\/rustc, \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0448\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 borrow checker, \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 MIR5+ \u043b\u0435\u0442, \u0438 \u043d\u0435 \u0443 \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f\u0426\u0438\u0444\u0440\u044b \u0441\u043f\u0440\u0430\u0432\u0430 &#8212; \u043c\u0435\u0434\u0438\u0430\u043d\u0430 \u043f\u043e \u043c\u043e\u0438\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u0438 \u043e\u043f\u0440\u043e\u0441\u0430\u043c \u0432 \u0447\u0430\u0442\u0430\u0445, \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f. \u041a\u0442\u043e-\u0442\u043e \u0441 \u0441\u0438\u043b\u044c\u043d\u044b\u043c C+\u00b1\u0431\u044d\u043a\u0433\u0440\u0430\u0443\u043d\u0434\u043e\u043c \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u0443\u0442\u044c \u0434\u043e Middle \u0437\u0430 8 \u043c\u0435\u0441\u044f\u0446\u0435\u0432, \u043a\u0442\u043e-\u0442\u043e \u0437\u0430\u0441\u0442\u0440\u0435\u0432\u0430\u0435\u0442 \u043d\u0430 ownership \u043d\u0430 \u0433\u043e\u0434 &#8212; \u0438 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e.\u041a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u043a\u0430\u0440\u0442\u043e\u0439\u0422\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430:\u041d\u0435 \u0442\u043e\u0440\u043e\u043f\u0438\u0441\u044c. \u042d\u0442\u0430\u043f\u044b 2, 7 \u0438 9 &#8212; \u043f\u0435\u0440\u0435\u043b\u043e\u043c\u043d\u044b\u0435. \u0411\u0435\u0437 \u043d\u0438\u0445 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043b\u044f\u0433\u0443\u0442.\u041f\u0435\u0440\u0435\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u0447\u0438\u0442\u0430\u043b \u043f\u0440\u043e async \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0441 ownership &#8212; \u043f\u043e\u0447\u0442\u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432\u0435\u0440\u043d\u0451\u0448\u044c\u0441\u044f \u043d\u0430\u0437\u0430\u0434. \u042d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0441\u043e\u0432\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0432\u044b\u0443\u0447\u0438\u043b \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0446\u0435\u043d\u043e\u0439.\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0447\u0435\u0441\u0442\u043d\u044b\u0435. \u0415\u0441\u043b\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0448\u044c \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 &#8212; \u044d\u0442\u0430\u043f \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u043d, \u043a\u0430\u043a \u0431\u044b \u043d\u0438 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435.\u0427\u0442\u043e Rust \u0440\u0435\u0448\u0430\u0435\u0442\u041e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u043c\u0435\u0441\u0442\u043e \u043b\u0435\u043a\u0446\u0438\u0438. \u0412\u043e\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043d\u0430 C++:std::vector&lt;int&gt; v = {1, 2, 3};int&amp; r = v[0];v.push_back(4);   \/\/ \u0432\u0435\u043a\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044cstd::cout &lt;&lt; r;   \/\/ r \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0438\u0441\u044f\u0447\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430, UB\u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043d\u0430 Rust \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0435\u0449\u0451 \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430:let mut v = vec![1, 2, 3];let r = &amp;v[0];v.push(4);        \/\/ \u043e\u0448\u0438\u0431\u043a\u0430: cannot borrow `v` as mutable because it is also borrowed as immutableprintln!(&#171;{}&#187;, r);\u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0434\u0430\u0436\u0430 Rust \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u0430\u0439\u0434\u0435: \u0446\u0435\u043b\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0431\u0430\u0433\u043e\u0432, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 C\/C++ \u0443\u0445\u043e\u0434\u044f\u0442 \u0434\u043d\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f CVE, \u0432 Rust \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0448\u0438\u0431\u043a\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041d\u0435 \u00ab\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0432\u043e\u043e\u0431\u0449\u0435\u00bb, \u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 data races \u0438 use-after-free \u0431\u0435\u0437 GC.Borrow checker \u043d\u0435 \u0443\u0447\u0438\u0442 \u043f\u0438\u0441\u0430\u0442\u044c Rust. \u041e\u043d \u0443\u0447\u0438\u0442 \u0434\u0443\u043c\u0430\u0442\u044c \u043e \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0438 \u044d\u0442\u0430 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u044b \u0432\u043e\u0437\u044c\u043c\u0451\u0448\u044c \u043f\u043e\u0442\u043e\u043c.\u0412\u0442\u043e\u0440\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c &#8212; \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. Zero-cost abstractions \u0437\u043d\u0430\u0447\u0430\u0442, \u0447\u0442\u043e \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b, traits \u0438 async \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u043a\u0430\u043a \u0440\u0443\u0447\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u043d\u0430 C. \u0422\u0440\u0435\u0442\u0438\u0439 &#8212; \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043a\u0430. \u0421\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0430\u0440\u0435\u043d\u0434\u0430 \u0434\u043e\u0440\u043e\u0433\u0430\u044f, \u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442, \u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043c\u0438\u0433\u0440\u0438\u0440\u0443\u044e\u0442 \u0433\u043e\u0440\u044f\u0447\u0438\u0435 \u043f\u0443\u0442\u0438 \u0441 Python \u0438 Java \u043d\u0430 Rust \u0440\u0430\u0434\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u043a\u0430 \u043c\u0430\u0448\u0438\u043d \u0432 \u0440\u0430\u0437\u044b.\u042d\u0442\u043e \u043d\u0435 \u0442\u0435\u043e\u0440\u0438\u044f: Discord \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b Read States \u0441 Go \u043d\u0430 Rust \u0438 \u0443\u0431\u0440\u0430\u043b \u043f\u0438\u043a\u0438 GC, Cloudflare \u043d\u0430 Rust \u043f\u0438\u0448\u0435\u0442 Pingora &#8212; \u043f\u0440\u043e\u043a\u0441\u0438, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0434\u0451\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043c\u0438\u0440\u043e\u0432\u043e\u0433\u043e HTTP-\u0442\u0440\u0430\u0444\u0438\u043a\u0430. \u042d\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438.\u041a\u043e\u0433\u0434\u0430 \u0431\u0440\u0430\u0442\u044c Rust, \u0430 \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442\u0421\u0430\u043c\u043e\u0435 \u0447\u0435\u0441\u0442\u043d\u043e\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u043e\u0432\u0438\u0447\u043a\u0443: Rust &#8212; \u043d\u0435 \u043b\u0443\u0447\u0448\u0438\u0439 \u0432\u044b\u0431\u043e\u0440 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0437\u0430\u0434\u0430\u0447. \u041e\u043d \u043b\u0443\u0447\u0448\u0438\u0439 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447, \u0433\u0434\u0435 \u0446\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u044b\u0441\u043e\u043a\u0430, \u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b.\u0417\u0430\u0434\u0430\u0447\u0430\u0411\u0440\u0430\u0442\u044c Rust?\u0427\u0435\u043c \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442\u0412\u044b\u0441\u043e\u043a\u043e\u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0414\u0430Go (\u043f\u0440\u043e\u0449\u0435 \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b), Java\/Kotlin (\u0435\u0441\u0442\u044c \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0438\u0437\u0430)\u0421\u043a\u0440\u0438\u043f\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, ETL \u043d\u0430 \u0434\u0435\u043d\u044c\u041d\u0435\u0442Python, Bash\u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0414\u0430C (\u0435\u0441\u043b\u0438 \u0436\u0451\u0441\u0442\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a toolchain)\u0412\u0435\u0431-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 WASM \u0434\u043b\u044f \u0442\u044f\u0436\u0451\u043b\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439TypeScript\u041f\u0440\u043e\u0442\u043e\u0442\u0438\u043f ML-\u043c\u043e\u0434\u0435\u043b\u0438\u041d\u0435\u0442Python + PyTorch\u0418\u043d\u0444\u0435\u0440\u0435\u043d\u0441 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435\u0414\u0430, \u0435\u0441\u043b\u0438 \u0432\u0430\u0436\u043d\u0430 \u043b\u0430\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044cC++, ONNX RuntimeCLI-\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438\u0414\u0430Go\u0414\u0435\u0441\u043a\u0442\u043e\u043f-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0414\u0430, \u0447\u0435\u0440\u0435\u0437 Tauri, \u0435\u0441\u043b\u0438 \u0432\u0430\u0436\u0435\u043d \u0440\u0430\u0437\u043c\u0435\u0440Electron, Qt, Flutter\u0418\u0433\u0440\u043e\u0432\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a\u0417\u0440\u0435\u043b\u044b\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0432\u0430\u0436\u043d\u0435\u0435C++ (Unreal), C# (Unity), GodotCRUD \u0441 \u0434\u0435\u0434\u043b\u0430\u0439\u043d\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0434\u0435\u043b\u044e\u041d\u0435\u0442\u0442\u043e, \u0447\u0442\u043e \u0437\u043d\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u041f\u0430\u0440\u0441\u0435\u0440 \u0441 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f\u043c\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438\u0414\u0430OCaml, Haskell\u041a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435\u0414\u0430Go, C\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439\u0414\u0430Java, C++ (\u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c compliance)\u0415\u0441\u043b\u0438 \u0432 \u0442\u0432\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 Rust \u00ab\u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u00bb &#8212; \u0431\u0435\u0440\u0438 \u0442\u043e, \u0447\u0442\u043e \u0437\u043d\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430. Rust \u043e\u043a\u0443\u043f\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0435 \u043f\u043e\u043b\u0443\u0433\u043e\u0434\u0430 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435.\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442: \u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u0435\u0441\u044f\u0446\u041d\u0435 \u043f\u044b\u0442\u0430\u0439\u0441\u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c The Rust Book \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e Rustlings \u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043a\u0443\u0440\u0441\u044b. \u042d\u0442\u043e \u0440\u0435\u0446\u0435\u043f\u0442 \u0432\u044b\u0433\u043e\u0440\u0430\u043d\u0438\u044f. \u041b\u0443\u0447\u0448\u0435 \u0442\u0430\u043a:\u043d\u0435\u0434\u0435\u043b\u044f 1: \u0433\u043b\u0430\u0432\u044b 1-6 The Rust Book + \u043f\u0435\u0440\u0432\u044b\u0435 30 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0439 Rustlings;\u043d\u0435\u0434\u0435\u043b\u044f 2: \u0433\u043b\u0430\u0432\u044b 7-10 + \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c CLI-\u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u043d\u0430 200 \u0441\u0442\u0440\u043e\u043a (\u0433\u0440\u0430\u0431\u0435\u0440 RSS \u0438\u043b\u0438 \u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u0441\u0442\u0440\u043e\u043a \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438);\u043d\u0435\u0434\u0435\u043b\u044f 3: \u0433\u043b\u0430\u0432\u044b 11-13 + \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0441\u0432\u043e\u044e \u0441\u0442\u0430\u0440\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u0441 Python\/Go \u043d\u0430 Rust \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c;\u043d\u0435\u0434\u0435\u043b\u044f 4: \u0433\u043b\u0430\u0432\u044b 14-17 + \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u00ab\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439\u00bb \u043f\u0440\u043e\u0435\u043a\u0442 (\u0441\u043c. \u0447\u0435\u043a-\u043b\u0438\u0441\u0442 \u0432 \u043a\u043e\u043d\u0446\u0435).\u041a \u043a\u043e\u043d\u0446\u0443 \u043c\u0435\u0441\u044f\u0446\u0430 \u0443 \u0442\u0435\u0431\u044f \u0432 \u043f\u043e\u0440\u0442\u0444\u043e\u043b\u0438\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0441\u0442\u044b\u0434\u043d\u043e \u0434\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443. \u0411\u0435\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Rust \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u043d\u0435 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u044f\u0435\u0442\u0441\u044f, \u0438 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043b\u043e\u0436\u043d\u043e\u0435 \u0447\u0443\u0432\u0441\u0442\u0432\u043e \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438.\u0427\u0430\u0441\u0442\u044c 1. Roadmap \u043f\u043e \u044d\u0442\u0430\u043f\u0430\u043c\u042d\u0442\u0430\u043f\u044b 0-2 &#8212; \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442 \u044f\u0437\u044b\u043a\u0430. \u042d\u0442\u0430\u043f\u044b 3-6 &#8212; \u044f\u0437\u044b\u043a \u0432 production. \u042d\u0442\u0430\u043f\u044b 7-9 &#8212; \u0433\u043b\u0443\u0431\u0438\u043d\u0430. \u042d\u0442\u0430\u043f\u044b 10-11 &#8212; \u0432\u044b\u0445\u043e\u0434 \u0432 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u044e.\u042d\u0442\u0430\u043f 0. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f &#8212; \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0441\u0451 \u0441\u044b\u043f\u0435\u0442\u0441\u044f\u0427\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u043crustup &#8212; \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u043e\u0432. \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u0442\u0430\u0432\u044c rustc \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440;VS Code + rust-analyzer \u0438\u043b\u0438 RustRover \u043e\u0442 JetBrains. rust-analyzer \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0438 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0443\u0441\u0442\u0443\u043f\u0430\u0435\u0442;cargo-edit, cargo-watch, bacon \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438;nightly-\u043a\u0430\u043d\u0430\u043b \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432: rustup toolchain install nightly.\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0421\u043e\u0437\u0434\u0430\u0439 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438 \u0441\u0435\u0431\u0435 .cargo\/config.toml \u0441 \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u043b\u0438\u043d\u043a\u0435\u0440\u043e\u043c \u0438 \u0448\u0430\u0431\u043b\u043e\u043d Cargo.toml \u0441 \u0442\u0432\u043e\u0438\u043c\u0438 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438:# .cargo\/config.toml[target.x86_64-unknown-linux-gnu]linker = &#171;clang&#187;rustflags = [&#171;-C&#187;, &#171;link-arg=-fuse-ld=mold&#187;][alias]b = &#171;build&#187;c = &#171;check&#187;t = &#171;test&#187;r = &#171;run&#187;\u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u0432\u0441\u0451\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u00ab\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0445\u00bb \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0443 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 &#8212; \u043d\u0435 Rust, \u0430 \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0439 rustup, \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 toolchain\u2019\u043e\u0432 \u0438\u043b\u0438 \u0441\u0442\u0430\u0440\u044b\u0439 rust-analyzer. \u041e\u0434\u0438\u043d \u0434\u0435\u043d\u044c \u043d\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043c\u0435\u0441\u044f\u0446 \u043c\u0443\u0447\u0435\u043d\u0438\u0439.\u042d\u0442\u0430\u043f 1. \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 &#8212; \u043f\u0440\u0438\u0432\u044b\u043a\u0430\u0435\u0448\u044c \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u044f\u0437\u044b\u043a\u0443\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044c\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0442\u0438\u043f\u044b, control flow, \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 (Vec, String, HashMap), \u043c\u043e\u0434\u0443\u043b\u0438. \u042d\u0442\u043e 1-2 \u043d\u0435\u0434\u0435\u043b\u0438 \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u0442 \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u0438 3-4 \u043d\u0435\u0434\u0435\u043b\u0438 \u0434\u043b\u044f \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0445 \u0438\u0437 Python\/JS.\u0413\u0434\u0435 \u043b\u043e\u043c\u0430\u044e\u0442\u0441\u044f\u041d\u0430 String vs &amp;str. \u042d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0442\u0438\u043f\u043e\u0432 Rust: \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u00ab\u0441\u0442\u0440\u043e\u043a\u0430\u00bb \u0438\u043c\u0435\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u0432\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430. \u041d\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0439 \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0435\u043d\u0438\u0435 &#8212; \u044d\u0442\u043e \u043b\u0443\u0447\u0448\u0430\u044f \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 ownership.\u041f\u0435\u0440\u0432\u044b\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044cfn greet(name: &amp;str) -&gt; String {    format!(&#171;\u041f\u0440\u0438\u0432\u0435\u0442, {}!&#187;, name)}fn main() {    let name = String::from(&#171;\u043c\u0438\u0440&#187;);    println!(&#171;{}&#187;, greet(&amp;name));    \/\/ name \u0432\u0441\u0451 \u0435\u0449\u0451 \u0432\u0430\u043b\u0438\u0434\u0435\u043d &#8212; \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0443, \u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435}\u0415\u0441\u043b\u0438 \u0442\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 &amp;name \u0438 \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u044b, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e name &#8212; \u044d\u0442\u0430\u043f 1 \u043f\u0440\u043e\u0439\u0434\u0435\u043d.\u041f\u0440\u043e\u0435\u043a\u0442 \u044d\u0442\u0430\u043f\u0430CLI-\u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u0438\u043b\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 \u0435\u0434\u0438\u043d\u0438\u0446. 100-200 \u0441\u0442\u0440\u043e\u043a, \u0431\u0435\u0437 external crates.\u042d\u0442\u0430\u043f 2. \u0412\u043b\u0430\u0434\u0435\u043d\u0438\u0435, \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435, \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0436\u0438\u0437\u043d\u0438 &#8212; \u0437\u0434\u0435\u0441\u044c \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044cOwnership, borrowing, &amp;T vs &amp;mut T, lifetimes, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, Copy vs Clone. \u0413\u043b\u0430\u0432\u044b 4 \u0438 10 The Rust Book + \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u0440\u043e lifetimes \u0432 Rust by Example.\u0413\u0434\u0435 \u043b\u043e\u043c\u0430\u044e\u0442\u0441\u044f\u042d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0438 \u0441\u0430\u043c\u0430\u044f \u0432\u0430\u0436\u043d\u0430\u044f \u0433\u043b\u0430\u0432\u0430 Rust. \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u043c\u0435\u043d\u0442: \u00ab\u044f \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u043f\u043e\u0447\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0440\u0443\u0433\u0430\u0435\u0442\u0441\u044f, \u0438 \u044f \u0443\u0441\u0442\u0430\u043b\u00bb. \u042d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e.\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 &#8212; \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0441 borrow checker\u2019\u043e\u043c, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f .clone() \u0432\u0435\u0437\u0434\u0435. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e Rust \u0442\u0435\u0440\u044f\u0435\u0442 \u0441\u043c\u044b\u0441\u043b. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445.\u041f\u0440\u043e\u0435\u043a\u0442 \u044d\u0442\u0430\u043f\u0430\u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0439 \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0439 Vec&lt;T&gt; \u0438\u043b\u0438 \u043e\u0434\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a. \u042d\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u0435\u0441\u0442: \u0435\u0441\u043b\u0438 \u0442\u044b \u043c\u043e\u0436\u0435\u0448\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0430 Rust \u0431\u0435\u0437 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a &#8212; \u043f\u0435\u0440\u0432\u044b\u0439 \u0431\u0430\u0440\u044c\u0435\u0440 \u043f\u0440\u043e\u0439\u0434\u0435\u043d. \u0423 Aria Beingessner \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u00abLearn Rust With Entirely Too Many Linked Lists\u00bb &#8212; \u043f\u0440\u043e\u0445\u043e\u0434\u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e.\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u0430\u043f\u0430 2\u041e\u0431\u044a\u044f\u0441\u043d\u0438, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438 \u0442\u0440\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u043e\u0447\u0438\u043d\u043a\u0438:fn main() {    let mut s = String::from(&#171;hello&#187;);    let r1 = &amp;s;    let r2 = &amp;mut s;    println!(&#171;{}, {}&#187;, r1, r2);}\u041c\u043e\u0436\u0435\u0448\u044c &#8212; \u0434\u0432\u0438\u0433\u0430\u0439\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435. \u041d\u0435\u0442 &#8212; \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0439\u0441\u044f \u043a \u0433\u043b\u0430\u0432\u0435 4 The Rust Book. \u0412 \u0441\u043f\u0435\u0448\u043a\u0435 \u044d\u0442\u043e\u0442 \u044d\u0442\u0430\u043f \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u0441\u044f.\u042d\u0442\u0430\u043f 3. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 &#8212; \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0448\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044cstruct, enum, impl, \u043c\u0435\u0442\u043e\u0434\u044b, \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, traits, generics, trait bounds. The Rust Book \u0433\u043b\u0430\u0432\u044b 5, 10. \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e: Rust API Guidelines &#8212; \u043a\u0430\u043a \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 API.Generic-\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441 trait boundsuse std::fmt::Display;fn longest&lt;&#8216;a, T: Display&gt;(items: &amp;&#8217;a [T]) -&gt; Option&lt;&amp;&#8217;a T&gt; {    items.iter().max_by_key(|item| item.to_string().len())}fn main() {    let words = vec![&#171;\u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435&#187;, &#171;\u0434\u043b\u0438\u043d\u043d\u043e\u0432\u0430\u0442\u043e\u0435&#187;, &#171;\u0441\u0440\u0435\u0434\u043d\u0435\u0435&#187;];    if let Some(w) = longest(&amp;words) {        println!(&#171;\u0441\u0430\u043c\u043e\u0435 \u0434\u043b\u0438\u043d\u043d\u043e\u0435: {}&#187;, w);    }}\u0417\u0434\u0435\u0441\u044c T: Display &#8212; trait bound, &#8216;a &#8212; lifetime, \u0438 \u043e\u0431\u0435 \u0432\u0435\u0449\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043a \u043a\u043e\u043d\u0446\u0443 \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430.\u0413\u0434\u0435 \u043b\u043e\u043c\u0430\u044e\u0442\u0441\u044f\u041d\u0430 trait bounds \u0441\u043b\u043e\u0436\u043d\u0435\u0435 T: Clone + Send. \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b, blanket impls, where-clauses &#8212; \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u043d\u0430\u043c\u0451\u043a \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0412 production-\u043a\u043e\u0434\u0435 \u0442\u0430\u043a\u043e\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0434\u043a\u043e.\u041f\u0440\u043e\u0435\u043a\u0442 \u044d\u0442\u0430\u043f\u0430\u041c\u0438\u043d\u0438-ORM-like \u0431\u0438\u043b\u0434\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438\u043b\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 (JSON \u2194 TOML \u2194 YAML) \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 trait-\u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f\u043c\u0438.\u042d\u0442\u0430\u043f 4. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 &#8212; \u0434\u0435\u043b\u0430\u0435\u0448\u044c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0441\u0442\u044b\u0434\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0427\u0442\u043e \u0443\u0447\u0438\u0442\u044cResult&lt;T, E&gt;, Option&lt;T&gt;, \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 ?, thiserror \u0434\u043b\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, anyhow \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, #[test], cargo test, proptest \u0438 insta \u0434\u043b\u044f \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a. \u0425\u043e\u0440\u043e\u0448\u0438\u0439&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-479308","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/479308","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=479308"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/479308\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=479308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=479308"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=479308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}