{"id":390047,"date":"2024-06-29T09:00:10","date_gmt":"2024-06-29T09:00:10","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=390047"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=390047","title":{"rendered":"<span>\u0416\u0438\u0437\u043d\u044c \u2013 \u0431\u043e\u043b\u044c: \u043a\u0430\u043a \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0432 Rust \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u0434<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 <\/h2>\n<p>\u041f\u0440\u0438\u0441\u0430\u0436\u0438\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u043f\u043e\u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438 \u043f\u043e\u0441\u043b\u0443\u0448\u0430\u0439\u0442\u0435 \u0441\u0442\u0430\u0440\u0438\u043a\u043e\u0432\u0441\u043a\u0443\u044e \u0431\u0430\u0439\u043a\u0443: \u0447\u0442\u043e \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u043a\u043e\u0433\u0434\u0430 \u044f \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b \u0443 Rust \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e\u0433\u043e. <\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 Rust \u043d\u043e\u0432\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443. \u0412\u0441\u0451, \u0447\u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u2014 \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0451 \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 API, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u0430\u043a\u043e\u043c\u0443-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <a href=\"https:\/\/developer.spotify.com\/documentation\/web-api\/\" rel=\"noopener noreferrer nofollow\">Spotify API<\/a>\u00a0\u0438\u043b\u0438, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0432 API \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u043a\u0430\u0436\u0435\u043c,\u00a0<a href=\"https:\/\/www.arangodb.com\/\" rel=\"noopener noreferrer nofollow\">ArangoDB<\/a>. \u041d\u0435 \u0442\u0430\u043a \u044d\u0442\u043e \u0438 \u0442\u044f\u0436\u0435\u043b\u043e: \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u0432\u044b \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0435\u0442\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e, \u0432\u0430\u043c \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u043e \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u044f\u043c\u043e\u043b\u0438\u043d\u0435\u0439\u043d\u043e. \u00a0<\/p>\n<p>\u0412\u044b \u0440\u0435\u0448\u0430\u0435\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c async. \u0420\u0430\u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0430\u0448\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u0432\u0432\u043e\u0434\/\u0432\u044b\u0432\u043e\u0434, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0437\u0434\u0435\u0441\u044c async \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e (\u043a\u0441\u0442\u0430\u0442\u0438, \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0442\u0435\u0445 \u0444\u0438\u0448\u0435\u043a, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0442\u0430\u043a \u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d Rust). \u0412\u044b \u0441\u0430\u0434\u0438\u0442\u0435\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u2014 \u0438 \u0432\u043e\u0442, \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u0443 \u0432\u0430\u0441 \u0433\u043e\u0442\u043e\u0432\u0430 \u0432\u0435\u0440\u0441\u0438\u044f v0.1.0. \u00ab\u041f\u0440\u0438\u044f\u0442\u043d\u043e\u00bb, \u2014 \u0434\u0443\u043c\u0430\u0435\u0442\u0435 \u0432\u044b, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e cargo publish\u00a0\u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0432\u0430\u0448\u0443 \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u00a0<a href=\"https:\/\/crates.io\/\" rel=\"noopener noreferrer nofollow\">crates.io<\/a>.<\/p>\n<p>\u041f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439, \u0438 \u0432\u0430\u043c \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0435\u0442 \u043d\u043e\u0432\u043e\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0441 GitHub. \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u0442\u043e-\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u043b \u0442\u0435\u043c\u0443: <\/p>\n<h2>\u0410 \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e?<\/h2>\n<p>\u0412 \u043c\u043e\u0451\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f async \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. \u042f \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0443 \u043d\u043e\u0432\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u043d\u043e \u043d\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u043a\u0430\u043a \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0442\u044c. \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u043d\u0435 \u0440\u0435\u0448\u0443\u0441\u044c \u043f\u043e\u0432\u0441\u044e\u0434\u0443 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043c\u043e\u0439 \u043a\u043e\u0434 <code>block_on(endpoint())<\/code>. \u042f \u0432\u0438\u0434\u0435\u043b \u043a\u0440\u0435\u0439\u0442\u044b \u0432\u0440\u043e\u0434\u0435\u00a0<a href=\"https:\/\/crates.io\/crates\/reqwest\" rel=\"noopener noreferrer nofollow\">reqwest<\/a>, \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439 <a href=\"https:\/\/docs.rs\/reqwest\/0.11.4\/reqwest\/blocking\/index.html\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0434\u0443\u043b\u044c\u00a0<\/a> \u0440\u043e\u0432\u043d\u043e \u0441 \u0442\u0435\u043c \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0438 \u0432\u0430\u043c \u0442\u0430\u043a \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0442\u044c? <\/p>\n<p>\u0412 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0442\u0430\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0439. \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0431\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u0430\u043a \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u2014 \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0440\u043e\u0434\u0435 <a href=\"https:\/\/crates.io\/crates\/tokio\" rel=\"noopener noreferrer nofollow\">tokio<\/a>, \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0435 \u0444\u0443\u0442\u0443\u0440\u044b, \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u0435, \u0442.\u0434.? \u042f \u0438\u043c\u0435\u044e \u0432 \u0432\u0438\u0434\u0443, \u043c\u0435\u043d\u044f \u0432\u0435\u0436\u043b\u0438\u0432\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u0432\u0441\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043a\u043e\u0434\u0435 \u043a\u043e\u0435-\u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430\u00a0async\u00a0\u0438\u00a0await, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u0437\u044b\u0441\u043a\u043e\u0432 \u0442\u0443\u0442 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f. <\/p>\n<p>\u0427\u0442\u043e \u0436,\u00a0<em>\u0431\u043e\u043b\u0435\u0435 \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0435<\/em> \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u0441 \u043a\u0440\u0435\u0439\u0442\u043e\u043c\u00a0<a href=\"https:\/\/crates.io\/crates\/rspotify\" rel=\"noopener noreferrer nofollow\">rspotify<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 <a href=\"https:\/\/github.com\/ramsayleung\/\" rel=\"noopener noreferrer nofollow\">Ramsay<\/a>, \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u043c. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u2014 \u044d\u0442\u043e \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0434\u043b\u044f Spotify Web API. \u0414\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f: \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u044f \u0434\u043e\u0431\u0438\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u0445\u043e\u0442\u044f, \u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0438 \u043d\u0435 \u0441\u0442\u043e\u043b\u044c \u0447\u0438\u0441\u0442\u044b\u043c, \u043a\u0430\u043a \u044f \u043d\u0430\u0434\u0435\u044f\u043b\u0441\u044f.<\/p>\n<h2>\u041f\u0435\u0440\u0432\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b<\/h2>\n<p>\u0427\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0432 \u043e\u0431\u0449\u0438\u0445 \u0447\u0435\u0440\u0442\u0430\u0445 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u043b\u0438\u0435\u043d\u0442 Rspotify:<\/p>\n<pre><code class=\"rust\">struct Spotify { \/* ... *\/ }  impl Spotify {     async fn some_endpoint(&amp;self, param: String) -> SpotifyResult&lt;String> {         let mut params = HashMap::new();         params.insert(\"param\", param);          self.http.get(\"\/some-endpoint\", params).await     }<\/code><\/pre>\n<p>\u0412 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043a\u043e\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435\u00a0<code>some_endpoint<\/code> \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043a\u0430\u043a \u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c, \u0442\u0430\u043a \u0438 \u0432 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0435\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441: \u043a\u0430\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a? \u0418 \u043a\u0430\u043a \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c? \u00a0<\/p>\n<h2>\u0421\u0442\u0430\u0440\u0430\u044f \u0434\u043e\u0431\u0440\u0430\u044f \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0430<\/h2>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0431\u044b\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u041e\u043d \u0431\u044b\u043b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b. \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u043a\u043e\u0434 \u0432 \u043d\u043e\u0432\u044b\u0439\u00a0<a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/tree\/v0.9\/src\/blocking\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0434\u0443\u043b\u044c blocking \u0432 Rspotify<\/a>. \u0417\u0434\u0435\u0441\u044c\u00a0<a href=\"https:\/\/docs.rs\/reqwest\" rel=\"noopener noreferrer nofollow\">reqwest<\/a>\u00a0(\u043d\u0430\u0448 HTTP-\u043a\u043b\u0438\u0435\u043d\u0442) \u0438\u00a0<a href=\"https:\/\/docs.rs\/reqwest\/latest\/reqwest\/blocking\/index.html\" rel=\"noopener noreferrer nofollow\">reqwest::blocking<\/a>\u00a0\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, async\u00a0\u0438\u043b\u0438\u00a0.await\u00a0\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043d\u043e\u0432\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 reqwest::blocking\u00a0\u0432\u043c\u0435\u0441\u0442\u043e\u00a0reqwest.<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c Rspotify \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c\u00a0<code>rspotify::blocking::Client<\/code>\u00a0\u0432\u043c\u0435\u0441\u0442\u043e <code>rspotify::Client<\/code> \u2014 \u0438 \u0432\u0443\u0430\u043b\u044f! \u041a\u043e\u0434 \u0441\u0442\u0430\u043b \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u043c. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441 async, \u043f\u043e\u043b\u0443\u0447\u0430\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0444\u0438\u0447, \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c\u00a0blocking\u00a0\u2014 \u0438 \u0434\u0435\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e.<\/p>\n<p>\u041f\u043e\u0437\u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u044f\u0441\u043d\u0438\u043b\u0430\u0441\u044c. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043a\u043e\u0434\u0430 \u0432 \u043a\u0440\u0435\u0439\u0442\u0435 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0438\u043b\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u044e\u0449\u0443\u044e\u0441\u044f, \u0442\u043e \u0432\u0441\u0451 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u0438\u0441\u0430\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0434\u0432\u0430\u0436\u0434\u044b.<\/p>\n<p>\u0412 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u0432\u0443\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0434\u043e\u0441\u043a\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0435. \u0412\u043e\u043e\u0431\u0449\u0435, \u044d\u0442\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f, \u043d\u043e \u0432\u0434\u0440\u0443\u0433 \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0432\u0441\u0435 \u0442\u0435\u0441\u0442\u044b! \u0412\u044b \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0434\u0443\u043c\u0430\u043b\u0438? \u041d\u0435\u0441\u0447\u0430\u0441\u0442\u043d\u043e\u043c\u0443 \u0440\u0435\u0446\u0435\u043d\u0437\u0435\u043d\u0442\u0443 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0434\u0432\u0430\u0436\u0434\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d \u0441 \u043e\u0431\u0435\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u2014 \u0438 \u0442\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<p>\u041f\u043e \u043d\u0430\u0448\u0435\u043c\u0443 \u043e\u043f\u044b\u0442\u0443, \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0451\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 Rspotify, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f, \u0438 \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432, \u043d\u0435 \u043f\u0440\u0438\u0432\u044b\u043a\u0448\u0438\u0445 \u043a \u0442\u0430\u043a\u0438\u043c \u043c\u044b\u0442\u0430\u0440\u0441\u0442\u0432\u0430\u043c. \u041d\u0430 \u043f\u0440\u0430\u0432\u0430\u0445 \u043d\u043e\u0432\u043e\u0438\u0441\u043f\u0435\u0447\u0451\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430 \u043f\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 Rspotify, \u044f \u0441 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0437\u043c\u043e\u043c \u043f\u0440\u0438\u043d\u044f\u043b\u0441\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c,\u00a0<a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/issues\/112\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u043a\u0438\u0435 \u0435\u0449\u0451 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b<\/a>.<\/p>\n<p><strong>\u0412\u044b\u0437\u043e\u0432\u00a0block_on<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/pull\/120\" rel=\"noopener noreferrer nofollow\">\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434<\/a>\u00a0\u2014 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u0451\u0440\u0442\u043a\u0438 \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0432\u043d\u0443\u0442\u0440\u0438\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435\u00a0<a href=\"https:\/\/docs.rs\/tokio\/latest\/tokio\/runtime\/struct.Runtime.html#method.block_on\" rel=\"noopener noreferrer nofollow\">block_on<\/a>.\u00a0block_on\u00a0\u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0444\u0443\u0442\u0443\u0440\u0443 \u0434\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043e\u043d\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0442\u0430\u043d\u0435\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439. \u0412\u0430\u043c \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u00a0<em>\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f<\/em> \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437:<\/p>\n<pre><code class=\"ruby\">mod blocking {     struct Spotify(super::Spotify);      impl Spotify {         fn endpoint(&amp;self, param: String) -> SpotifyResult&lt;String> {             runtime.block_on(async move {                 self.0.endpoint(param).await             })         }     }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c\u00a0<code>block_on<\/code>, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <a href=\"https:\/\/crates.io\/crates\/tokio\" rel=\"noopener noreferrer nofollow\">tokio<\/a>\u00a0:<\/p>\n<pre><code class=\"rust\">let mut runtime = tokio::runtime::Builder::new()     .basic_scheduler()     .enable_all()     .build()     .unwrap();<\/code><\/pre>\n<p>\u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441: \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u043a \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435, \u043b\u0438\u0431\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435? \u041c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0451 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 (<em>ewwww<\/em>) \u0438\u043b\u0438, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u043b\u0443\u0447\u0448\u0435, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435\u00a0Spotify. \u041d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u0441\u0440\u0435\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u043d\u043e\u0441\u0438\u0442\u0441\u044f<em> \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u0430\u044f<\/em>\u00a0\u0441\u0441\u044b\u043b\u043a\u0430, \u0435\u0451 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0432 <code>Arc&lt;Mutex&lt;T>><\/code>, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0433\u0443\u0431\u0438\u0432 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u0443 \u0432\u0430\u0441 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435. \u042d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <a href=\"https:\/\/docs.rs\/tokio\/latest\/tokio\/runtime\/struct.Handle.html\" rel=\"noopener noreferrer nofollow\">Handle<\/a> \u0438\u0437 Tokio, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"rust\">use tokio::runtime::Runtime;  lazy_static! { \/\/ \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f `once_cell`     static ref RT: Runtime = Runtime::new().unwrap(); }  fn endpoint(&amp;self, param: String) -> SpotifyResult&lt;String> {     RT.handle().block_on(async move {         self.0.endpoint(param).await     })<\/code><\/pre>\n<p>\u041f\u0440\u0438\u0442\u043e\u043c, \u0447\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0448 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435\u00a0<a href=\"https:\/\/nullderef.com\/blog\/rust-async-sync\/#block-on-perf\" rel=\"noopener noreferrer nofollow\">[1]<\/a>, \u0437\u0434\u0435\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u0443\u0436\u0435\u043d <a href=\"https:\/\/crates.io\/crates\/reqwest\" rel=\"noopener noreferrer nofollow\">reqwest<\/a>, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e, \u043e\u043d \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u043f\u043e\u0442\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u00a0block_on, \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0439 \u0443 \u043a\u0430\u043d\u0430\u043b\u0430 \u0441 \u0437\u0430\u0434\u0430\u043d\u0438\u044f\u043c\u0438\u00a0<a href=\"https:\/\/nullderef.com\/blog\/rust-async-sync\/#block-on-channels\" rel=\"noopener noreferrer nofollow\">[2]<\/a>\u00a0<a href=\"https:\/\/nullderef.com\/blog\/rust-async-sync\/#block-on-reqwest\" rel=\"noopener noreferrer nofollow\">[3]<\/a>.<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0442\u0430\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u043e \u0441\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438. \u0412\u044b \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0442\u0430\u043a\u0438\u0435 futures\u00a0\u0438\u043b\u0438\u00a0tokio, \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435 \u0438\u0445 \u0432 \u0432\u0430\u0448 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b. \u0412\u0441\u0451 \u044d\u0442\u043e \u0440\u0430\u0434\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b\u2026 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434. \u0417\u0430 \u044d\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043d\u043e \u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443 \u0432\u0430\u0441 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430. \u041f\u0443\u0441\u0442\u044c \u044d\u0442\u043e \u0438 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043d\u043e \u043e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f.\u00a0<a href=\"https:\/\/crates.io\/crates\/reqwest\" rel=\"noopener noreferrer nofollow\">reqwest<\/a>\u00a0\u2014 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u0438 \u0442\u0430\u043c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u043c\u043e\u0436\u043d\u043e \u0441\u0435\u0431\u0435 \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c blocking. \u041d\u043e \u0432 \u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u043a\u0440\u0435\u0439\u0442\u0435, \u0442\u0430\u043a\u043e\u043c \u043a\u0430\u043a\u00a0rspotify, \u044d\u0442\u043e \u0432\u044b\u0442\u044f\u043d\u0443\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435. <\/p>\n<h2>\u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0440\u0435\u0439\u0442\u0430<\/h2>\n<p>\u0421\u0443\u0434\u044f \u043f\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u2014 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u0440\u0435\u0439\u0442\u044b. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c\u00a0rspotify-sync\u00a0\u0438\u00a0rspotify-async, \u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441\u0430\u043c\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0438 \u0431\u044b, \u043a\u0430\u043a\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043e\u043d\u0438 \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u2014 \u0434\u0430\u0436\u0435 \u0434\u0432\u0430, \u0435\u0441\u043b\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. \u041d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u0442\u0430 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u0440\u0435\u0439\u0442\u0430?\u00a0<a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/pull\/253\" rel=\"noopener noreferrer nofollow\">\u041c\u043d\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u00a0\u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0438\u043d\u0430\u0447\u0435, \u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u043a \u0441\u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043a\u0440\u0435\u0439\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c<\/a>, \u0434\u0430\u0436\u0435 \u0446\u0435\u043d\u043e\u0439 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0443\u0445\u0438\u0449\u0440\u0435\u043d\u0438\u0439 \u0441 Cargo: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430 Cargo.toml, \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0440\u0435\u0439\u0442 (\u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u044d\u0442\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e).<\/p>\n<p>\u0412\u043e\u043e\u0440\u0443\u0436\u0438\u0432\u0448\u0438\u0441\u044c \u0442\u0430\u043a\u043e\u0439 \u0438\u0434\u0435\u0435\u0439, \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u044b\u043c\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u0430\u043c\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0432\u0437\u044f\u0442\u044c \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u0440\u0435\u0439\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u0430. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0431\u044b \u043f\u0438\u0441\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0441 \u043a\u043e\u0434\u043e\u043c \u043d\u0430 Rust, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u0430\u043a async\/.await. \u041d\u043e, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u044d\u0442\u0430 \u0442\u0435\u043c\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 \u0441\u0442\u0430\u0442\u044c\u0438. <\/p>\n<p><strong>\u0412\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b: \u043a\u0440\u0435\u0439\u0442 maybe_async\u00a0<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/pull\/129\" rel=\"noopener noreferrer nofollow\">\u041d\u0430\u0448\u0430 \u0442\u0440\u0435\u0442\u044c\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430<\/a>\u00a0\u0431\u0430\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u043a\u0440\u0435\u0439\u0442\u0435 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <a href=\"https:\/\/crates.io\/crates\/maybe_async\" rel=\"noopener noreferrer nofollow\">maybe_async<\/a>\u00a0. \u041f\u043e\u043c\u043d\u044e, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u043f\u043e \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u0438 \u0441\u0447\u0451\u043b \u0435\u0433\u043e \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u043c.<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0438\u0434\u0435\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u0440\u0435\u0439\u0442\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0438\u0437 \u043a\u043e\u0434\u0430 \u0432\u0441\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u00a0<code>async<\/code>\u00a0\u0438\u00a0<code>.await<\/code>\u00a0\u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e\u0433\u043e \u043c\u0430\u043a\u0440\u043e\u0441\u0430. \u0422\u0430\u043a \u043c\u044b, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"rust\">#[maybe_async::maybe_async] async fn endpoint() { \/* \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b *\/ }<\/code><\/pre>\n<p>\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"rust\">#[cfg(not(feature = \"is_sync\"))] async fn endpoint() { \/* \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b *\/ }  #[cfg(feature = \"is_sync\")] fn endpoint() { \/* \u0443\u0434\u0430\u043b\u0438\u043b\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441 `.await` *\/ }<\/code><\/pre>\n<p>\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u2014 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0438\u043b\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u0438\u0447\u0438 maybe_async\/is_sync\u00a0\u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u0440\u0435\u0439\u0442\u0430. \u0414\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u043a\u0440\u043e\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438, \u0442\u0438\u043f\u0430\u0436\u0430\u043c\u0438 \u0438 \u0431\u043b\u043e\u043a\u0430\u043c\u0438\u00a0impl. \u0415\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e async\u00a0\u0438\u00a0.await, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u044b\u0445 \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432 async_impl\u00a0\u0438\u00a0sync_impl. \u042d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e, \u0438 \u043c\u044b \u0443\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u0435\u0451 \u0432 Rspotify \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043e\u043d\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0434\u043d\u043e\u0439, \u0447\u0442\u043e \u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0443 Rspotify\u00a0<em>\u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u0430 http-\u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/em>. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u0430\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043e\u043a, \u0447\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u00a0<em>\u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u0430 async\/sync<\/em>. \u0422\u0430\u043a \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e HTTP-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/crates.io\/crates\/reqwest\" rel=\"noopener noreferrer nofollow\">reqwest<\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/crates.io\/crates\/ureq\" rel=\"noopener noreferrer nofollow\">ureq<\/a>, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c \u0438\u043b\u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442.<\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0443\u00a0<em>\u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u0430 http-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 <\/em>\u043d\u0435 \u0442\u0430\u043a \u0441\u043b\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u0435\u0441\u0442\u044c\u00a0maybe_async. \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0438\u043f\u0430\u0436 \u0434\u043b\u044f <a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/blob\/89b37219a2230cdcf08c4cfd2ebe46d64902f03d\/rspotify-http\/src\/common.rs#L46\" rel=\"noopener noreferrer nofollow\">HTTP-\u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/a>, \u0430 \u0437\u0430\u0442\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c:<\/p>\n<p><em>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u0441\u0442\u043e\u0438\u0442 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u043b\u043e\u0432. (\u043c\u044b \u0432\u044b\u043b\u043e\u0436\u0438\u043b\u0438 \u043d\u0430 Github \u043f\u043e\u043b\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 Rspotify:\u00a0<\/em><a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/blob\/master\/rspotify-http\/src\/reqwest.rs#L97\" rel=\"noopener noreferrer nofollow\"><em>\u0437\u0434\u0435\u0441\u044c \u0434\u043b\u044f reqwest<\/em><\/a><em>, \u0430 \u0437\u0434\u0435\u0441\u044c \u0434\u043b\u044f\u00a0<\/em><a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/blob\/master\/rspotify-http\/src\/ureq.rs#L56\" rel=\"noopener noreferrer nofollow\"><em>ureq<\/em><\/a><em>)<\/em><\/p>\n<pre><code class=\"rust\">#[maybe_async] trait HttpClient {     async fn get(&amp;self) -> String; }  #[sync_impl] impl HttpClient for UreqClient {     fn get(&amp;self) -> String { ureq::get(\/* ... *\/) } }  #[async_impl] impl HttpClient for ReqwestClient {     async fn get(&amp;self) -> String { reqwest::get(\/* ... *\/).await } }  struct SpotifyClient&lt;Http: HttpClient> {     http: Http }  #[maybe_async] impl&lt;Http: HttpClient> SpotifyClient&lt;Http> {     async fn endpoint(&amp;self) { self.http.get(\/* ... *\/) } }<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0432\u0430\u043c\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435 Cargo.toml \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0444\u0438\u0447 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0444\u043b\u0430\u0433\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d <code>client-ureq<\/code>, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c <code>maybe_async\/is_sync<\/code>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 <code>ureq<\/code>\u00a0\u2014 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439. \u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u0437\u0434\u0435\u0441\u044c \u0443\u0434\u0430\u043b\u044f\u043b\u0438\u0441\u044c \u0431\u044b \u0431\u043b\u043e\u043a\u0438 <code>async\/.await<\/code>\u00a0\u0438 <code>#[async_impl]<\/code>, \u0430 \u043a\u043b\u0438\u0435\u043d\u0442 Rspotify \u0432\u043d\u0443\u0442\u0440\u0438\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e \u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0441\u044f \u0431\u044b \u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f ureq.<\/p>\n<p>\u0422\u0430\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043b\u0438\u0448\u0435\u043d\u043e \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0432\u044b\u0448\u0435 \u043f\u0440\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a:<\/p>\n<ul>\n<li>\n<p> \u041a\u043e\u0434 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f<\/p>\n<\/li>\n<li>\n<p>\u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a, \u043d\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043d\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0443\u0436\u0435\u043d \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043a\u043b\u0438\u0435\u043d\u0442, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f\u00a0ureq, \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c\u00a0tokio\u00a0\u0441\u043e\u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0438<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u0441\u0451 \u0442\u0430\u043a\u0436\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e: \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u043b\u0430\u0433 \u0432 \u0444\u0430\u0439\u043b\u0435 Cargo.toml<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u043e \u0437\u0434\u0435\u0441\u044c \u043e\u0442\u043e\u0440\u0432\u0438\u0442\u0435\u0441\u044c \u043e\u0442 \u0447\u0442\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0430\u0440\u0443 \u043c\u0438\u043d\u0443\u0442 \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0439\u0442\u0435\u0441\u044c \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c, \u0430 \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043c\u043e\u0433\u0443 \u0434\u0430\u0442\u044c \u0432\u0430\u043c 9 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u2014 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0434\u043b\u044f \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u2026 <\/p>\n<h2>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430<\/h2>\n<p>\u0421\u0443\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0444\u0438\u0447\u0438 \u0432 Rust \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c\u00a0<strong>\u0430\u0434\u0434\u0438\u0442\u0438\u0432\u043d\u044b\u043c\u0438<\/strong>: \u00ab\u0435\u0441\u043b\u0438 \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0444\u0438\u0447\u0443, \u0442\u043e \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u0430\u044f \u0434\u0440\u0443\u0433\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u0444\u0438\u0447 \u2014 \u0438 \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e. \u0412 Cargo \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043a\u0440\u0435\u0439\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0440\u0430\u0437 \u0437\u0430 \u0440\u0430\u0437\u043e\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043a\u0440\u0435\u0439\u0442.\u00a0<a href=\"https:\/\/doc.rust-lang.org\/cargo\/reference\/features.html#feature-unification\" rel=\"noopener noreferrer nofollow\">\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0435\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435, \u0432\u043e\u0442 \u0441\u0442\u0430\u0442\u044c\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d\u0430 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0430 \u0432\u0435\u0441\u044c\u043c\u0430 \u0445\u043e\u0440\u043e\u0448\u043e<\/a>.<\/p>\n<p>\u0418\u0437-\u0437\u0430 \u0442\u0430\u043a\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0435 \u0444\u0438\u0447\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u0434\u0435\u0440\u0435\u0432\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u00a0<code>maybe_async\/is_sync<\/code>\u00a0\u2014 \u044d\u0442\u043e\u00a0<em>\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0430\u044f<\/em>\u00a0\u0444\u0438\u0447\u0430, \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u0447\u0435\u0440\u0435\u0437 <code>client-ureq<\/code>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u043e\u0439 <code>client-reqwest<\/code>, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0442\u043a\u0430\u0436\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0<code>maybe_async<\/code>\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u0440\u0430\u0441\u0447\u0451\u0442\u043e\u043c \u043d\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043a\u0440\u0435\u0439\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u043f\u0440\u044f\u043c\u043e \u0438\u043b\u0438 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0435\u043b \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Rspotify. \u0412\u043e\u043e\u0431\u0449\u0435, \u0435\u0441\u043b\u0438 \u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043f\u0440\u0430\u0432\u043a\u0435 \u043f\u043e Cargo, \u0432\u0441\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f maybe_async\u00a0\u0441\u0435\u0439\u0447\u0430\u0441 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0439.<\/p>\n<h2>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0444\u0438\u0447 v2<\/h2>\n<p>\u0420\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043e \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435, \u0431\u0443\u0434\u0442\u043e \u044d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u00ab\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0444\u0438\u0447 v2\u00bb (feature resolver), \u0447\u0442\u043e\u00a0<a href=\"https:\/\/doc.rust-lang.org\/cargo\/reference\/features.html#feature-resolver-version-2\" rel=\"noopener noreferrer nofollow\">\u0442\u0430\u043a\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u043e \u0432 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>. \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 2021 \u0433\u043e\u0434\u0430 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u043e \u0432 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0435\u0451 \u0432 \u0444\u0430\u0439\u043b\u0435 Cargo.toml. \u0421\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u0432 \u044d\u0442\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0443\u0434\u0430\u0451\u0442\u0441\u044f \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0443\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0444\u0438\u0447 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043d\u043e \u043d\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c:<\/p>\n<ul>\n<li>\n<p>\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0444\u0438\u0447\u0438, \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0442\u0435\u0445 \u0446\u0435\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0435\u0449\u0451 \u043d\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u044b\u0435 \u043c\u0430\u043a\u0440\u043e\u0441\u044b \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0444\u0438\u0447\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043d\u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u044e\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0444\u0438\u0447, \u0435\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0434\u043b\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u043e\u0439 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0446\u0435\u043b\u0438 (\u043a\u0430\u043a, \u0441\u043a\u0430\u0436\u0435\u043c, \u0442\u0435\u0441\u0442\u044b \u0438\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b). <\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 \u2014 \u0438 \u0432\u0441\u0451 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043a\u0430\u043a \u0431\u044b\u043b\u043e \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e. <a href=\"https:\/\/github.com\/marioortizmanero\/resolver-v2-conflict\" rel=\"noopener noreferrer nofollow\">\u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>\u00a0\u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430 \u0444\u0438\u0447, \u0438\u0437-\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043b\u044e\u0431\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f.<\/p>\n<h2>\u0414\u0440\u0443\u0433\u0438\u0435 \u043e\u0442\u043a\u0430\u0437\u044b<\/h2>\n<p>\u041d\u0430\u0448\u043b\u043e\u0441\u044c \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0435\u0439\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b\u0430\u0441\u044c \u044d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/crates.io\/crates\/arangors\" rel=\"noopener noreferrer nofollow\">arangors<\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/crates.io\/crates\/aragog\" rel=\"noopener noreferrer nofollow\">aragog<\/a>: \u043e\u0431\u0451\u0440\u0442\u043a\u0438 \u0434\u043b\u044f ArangoDB. \u041e\u0431\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u00a0maybe_async\u00a0\u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c <a href=\"https:\/\/nullderef.com\/blog\/rust-async-sync\/#arangors-error\" rel=\"noopener noreferrer nofollow\">[5]<\/a>\u00a0<a href=\"https:\/\/nullderef.com\/blog\/rust-async-sync\/#aragog-error\" rel=\"noopener noreferrer nofollow\">[6]<\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/crates.io\/crates\/inkwell\" rel=\"noopener noreferrer nofollow\">inkwell<\/a>\u00a0: \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0434\u043b\u044f LLVM. \u041e\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u0440\u0441\u0438\u0439 LLVM, \u043d\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c\u00a0<a href=\"https:\/\/nullderef.com\/blog\/rust-async-sync\/#inkwell-error\" rel=\"noopener noreferrer nofollow\">[7]<\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/crates.io\/crates\/k8s-openapi\" rel=\"noopener noreferrer nofollow\">k8s-openapi<\/a>\u00a0: \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0434\u043b\u044f Kubernetes, \u0441 \u043d\u0435\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0442\u0430 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0447\u0442\u043e \u0438 \u0441\u00a0inkwell\u00a0<a href=\"https:\/\/nullderef.com\/blog\/rust-async-sync\/#k8s-error\" rel=\"noopener noreferrer nofollow\">[8]<\/a>.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u00a0maybe_async<\/strong><\/p>\n<p>\u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e\u0442 \u043a\u0440\u0435\u0439\u0442 \u043d\u0430\u0447\u0430\u043b \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c, \u044d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0432 maybe_async: \u0442\u0430\u043c \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0438 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0435\u0451 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c:<\/p>\n<p>\u00a0<a href=\"https:\/\/github.com\/fMeow\/maybe-async-rs\/issues\/6\" rel=\"noopener noreferrer nofollow\">async \u0438 sync \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435\u00a0fMeow\/maybe-async-rs#6<\/a><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443 <code>maybe_async<\/code>\u00a0\u0431\u0443\u0434\u0443\u0442 \u0444\u043b\u0430\u0433\u0438 \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u0444\u0438\u0447:\u00a0<code>is_sync<\/code>\u00a0\u0438\u00a0<code>is_async<\/code>. \u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043a\u0440\u0435\u0439\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0431\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e, \u043d\u043e \u0441 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u043e\u043c <code>_sync<\/code>\u00a0\u0438\u043b\u0438\u00a0<code>_async<\/code>\u00a0\u0443 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u2014 \u0442\u0430\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: <\/p>\n<pre><code class=\"rust\">#[maybe_async::maybe_async] async fn endpoint() { \/* \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b *\/ }<\/code><\/pre>\n<p>\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"rust\">#[cfg(feature = \"is_async\")] async fn endpoint_async() { \/* \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b *\/ }  #[cfg(feature = \"is_sync\")] fn endpoint_sync() { \/* \u0443\u0434\u0430\u043b\u0438\u043b\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441 `.await` *\/ }<\/code><\/pre>\n<p>\u041f\u0440\u0430\u0432\u0434\u0430, \u044d\u0442\u0438 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u044b \u0432\u043d\u043e\u0441\u044f\u0442 \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u044d\u0440\u0433\u043e\u043d\u043e\u043c\u0438\u0447\u043d\u0435\u0435. \u042f \u0441\u0434\u0435\u043b\u0430\u043b \u0444\u043e\u0440\u043a maybe_async\u00a0\u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u2014 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/github.com\/fMeow\/maybe-async-rs\/issues\/6#issuecomment-880581551\" rel=\"noopener noreferrer nofollow\">\u0432 \u044d\u0442\u043e\u0439 \u0432\u0435\u0442\u043a\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432<\/a>. \u041a\u043e\u0440\u043e\u0447\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0432\u0441\u0451 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u043e, \u0438 \u044f \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u043e\u0442\u0441\u0442\u0443\u043f\u0438\u043b\u0441\u044f.<\/p>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u0432\u044b\u043d\u0443\u0436\u0434\u0430\u043b \u043d\u0430\u0441 \u0443\u0445\u0443\u0434\u0448\u0438\u0442\u044c \u044e\u0437\u0430\u0431\u0438\u043b\u0438\u0442\u0438 Rspotify \u0434\u043b\u044f \u0432\u0441\u0435\u0445. \u041d\u043e \u044f \u0441\u0447\u0438\u0442\u0430\u044e \u043c\u0430\u043b\u043e\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u043c, \u0447\u0442\u043e \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u2014 \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f. rspotify, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 reqwest \u2014 \u044d\u0442\u043e \u00ab\u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0430\u044f\u00bb \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043b\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u0432 \u0434\u0435\u0440\u0435\u0432\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0430.<\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0442\u043e\u0438\u043b\u043e \u0431\u044b \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0437\u0430 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c Cargo?<\/p>\n<h2>\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430<\/h2>\n<p>\u041c\u044b \u0432 Rspotify \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443, \u0441\u043b\u0443\u0447\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0440\u0430\u043d\u0435\u0435:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/rust-lang\/rfcs\/pull\/2962\" rel=\"noopener noreferrer nofollow\">\u041a \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0436\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 RFC \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 Rust<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442 oneof (\u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u0435\u00a0#[cfg(any(\u2026\u200b))]\u00a0\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435) \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0445 \u0444\u0438\u0447. \u0422\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0449\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0443\u044e\u0449\u0438\u0435 \u0444\u0438\u0447\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 <em>\u0432\u044b\u0431\u043e\u0440\u0430 \u043d\u0435\u0442<\/em>, \u043d\u043e \u0444\u0438\u0447\u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u043e\u0433\u043e \u0430\u0434\u0434\u0438\u0442\u0438\u0432\u043d\u044b\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0433\u043e RFC \u0437\u0430\u0432\u044f\u0437\u0430\u043b\u0430\u0441\u044c\u00a0<a href=\"https:\/\/internals.rust-lang.org\/t\/pre-rfc-cargo-mutually-exclusive-features\/13182\/27\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u044f<\/a>\u00a0\u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443, \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0435 \u0444\u0438\u0447\u0438 \u0432 Cargo \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u043e\u043c. \u0425\u043e\u0442\u044f, \u0442\u0430\u043c \u0438 \u0435\u0441\u0442\u044c \u043a\u043e\u0435-\u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043d\u0430 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c, \u0434\u0430\u043b\u0435\u043a\u043e \u044d\u0442\u0430 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u044f \u043d\u0435 \u0443\u0448\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/rust-lang\/cargo\/issues\/2980\" rel=\"noopener noreferrer nofollow\">\u0412 \u044d\u0442\u043e\u043c \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 Cargo<\/a>\u00a0\u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0441 Windows API. \u0412 \u044d\u0442\u043e\u0439 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438 \u0438\u0434\u0435\u0439, \u043d\u043e \u043d\u0438\u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0440\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0432 Cargo.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/rust-lang\/cargo\/issues\/4803\" rel=\"noopener noreferrer nofollow\">\u0412 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e\u043c \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0438 \u043d\u0430 Cargo<\/a>\u00a0\u0440\u0435\u0447\u044c \u0438\u0434\u0451\u0442 \u043e \u0442\u043e\u043c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0441\u0431\u043e\u0440\u043a\u0438, \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u044f \u0444\u043b\u0430\u0433\u0438. \u0415\u0441\u043b\u0438 \u0444\u0438\u0447\u0438 \u0441\u0442\u0440\u043e\u0433\u043e \u0430\u0434\u0434\u0438\u0442\u0438\u0432\u043d\u044b, \u0442\u043e\u00a0cargo test &#8212;all-features\u00a0\u0437\u0430\u043a\u0440\u043e\u0435\u0442 \u0432\u0441\u0451. \u041d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u043a\u0440\u043e\u0435\u0442, \u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0439 \u0444\u043b\u0430\u0433\u043e\u0432, \u0447\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0435\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u041d\u0435\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f\u00a0<a href=\"https:\/\/github.com\/taiki-e\/cargo-hack\" rel=\"noopener noreferrer nofollow\">cargo-hack<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0438\u043d\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u00a0<a href=\"https:\/\/blog.rust-lang.org\/inside-rust\/2023\/02\/23\/keyword-generics-progress-report-feb-2023.html\" rel=\"noopener noreferrer nofollow\">\u043d\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u0438\u0432\u0435 Keyword Generics<\/a>. \u041f\u043e-\u0432\u0438\u0434\u0438\u043c\u043e\u043c\u0443, \u044d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u0441\u0432\u0435\u0436\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0440\u0435\u0448\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043d\u043e \u043f\u043e\u043a\u0430 \u043e\u043d \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u00ab\u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u00bb <a href=\"https:\/\/blog.rust-lang.org\/inside-rust\/2022\/07\/27\/keyword-generics.html#q-is-there-an-rfc-available-to-read\" rel=\"noopener noreferrer nofollow\">\u0438 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0435\u0449\u0451 \u043d\u0435\u0442 RFC, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0438 \u044d\u0442\u0438 \u0441\u043b\u0443\u0447\u0430\u0438<\/a>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e\u00a0<a href=\"https:\/\/github.com\/rust-lang\/rfcs\/pull\/2962#issuecomment-664656377\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0430\u0440\u043e\u043c\u0443 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044e<\/a>, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 Rust \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043e\u0442 \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u044b; \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041f\u0443\u0441\u0442\u044c \u0438 \u043d\u0435\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438 \u0434\u0430\u043b\u0435\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 Rust \u2014 \u043e\u043d \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/sans-io.readthedocs.io\/\" rel=\"noopener noreferrer nofollow\">\u00abSans I\/O<\/a><u>\u00bb<\/u>. \u042d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b Python \u0430\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u043a\u0438\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u043a\u0430\u043a HTTP, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0432\u0435\u0441\u0442\u0438 \u0434\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0430 Rust \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u043e\u0434\u0430, \u043e\u043d \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f\u00a0<a href=\"https:\/\/github.com\/EmbarkStudios\/tame-oidc\" rel=\"noopener noreferrer nofollow\">tame-oidc<\/a>.<\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0412\u043e\u0442 \u0438\u0437 \u043a\u0430\u043a\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0440\u0430\u0432\u043a\u0443 Cargo. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Rspotify \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u00a0maybe_async\u00a0\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u044b\u00a0<code>_async<\/code>\u00a0\u0438\u00a0<code>_sync<\/code>\u00a0\u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043a\u0430\u043a \u0434\u043b\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043a\u043e\u043c\u0443 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f, \u0438 \u043a\u043e\u0442\u043e\u0440\u0430\u044f <a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/pull\/224#issuecomment-909324671\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b Rspotify<\/a>. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0442 rspotify \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u043a\u0440\u0435\u0439\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/github.com\/hrkfdn\/ncspot\" rel=\"noopener noreferrer nofollow\">ncspot<\/a>\u00a0\u0438\u043b\u0438\u00a0<a href=\"https:\/\/github.com\/Spotifyd\/spotifyd\" rel=\"noopener noreferrer nofollow\">spotifyd<\/a>, \u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u0440\u0435\u0439\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/github.com\/Rigellute\/spotify-tui\" rel=\"noopener noreferrer nofollow\">spotify-tui<\/a>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c. \u041d\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u0435\u043b\u0430\u0442\u044c. <\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u043d\u0430\u044e, \u0447\u0442\u043e \u044f \u0441\u0430\u043c \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u0431\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c: \u00ab\u041d\u0435\u0442, \u043c\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u00bb \u0438\u043b\u0438 \u00ab\u041d\u0435\u0442. \u041c\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u00bb. \u041f\u0440\u0438\u0442\u043e\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043e\u0431\u043e\u0438\u0445, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043c\u0435\u0442\u044c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u00ab\u043d\u0435\u0442\u00bb. \u0415\u0441\u043b\u0438 \u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0444\u0438\u0447\u0435\u0439 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u044f \u0431\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0448\u0443, \u0430 \u0443 \u0432\u0430\u0441 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0442 \u043a\u0430\u0434\u0440\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0432\u0435\u0441\u0442\u0438 \u0432 \u043d\u0435\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u0442\u043e \u0432\u0430\u043c \u043d\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0438\u043d\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430. \u0415\u0441\u043b\u0438 \u0431\u044b \u043a\u0442\u043e-\u0442\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u0438\u043b\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u043e\u0440\u043a \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043d\u0443\u0436\u0434. <\/p>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e API-\u043e\u0431\u0451\u0440\u0442\u043e\u043a \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0438\u043b\u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439, \u0438\u043b\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434. \u0422\u0430\u043a,\u00a0<a href=\"https:\/\/crates.io\/crates\/serenity\" rel=\"noopener noreferrer nofollow\">serenity<\/a>\u00a0(Discord API),\u00a0<a href=\"https:\/\/crates.io\/crates\/sqlx\" rel=\"noopener noreferrer nofollow\">sqlx<\/a>\u00a0(\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 SQL) \u0438 <a href=\"https:\/\/crates.io\/crates\/teloxide\" rel=\"noopener noreferrer nofollow\">teloxide<\/a>\u00a0(API Telegram) \u0441\u0442\u0440\u043e\u0433\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b.<\/p>\n<p>\u041f\u0443\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438 \u044d\u0442\u043e \u0438 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u0440\u0443\u0447\u0430\u0435\u0442, \u044f \u043d\u0435 \u0440\u0430\u0441\u043a\u0430\u0438\u0432\u0430\u044e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0440\u0430\u0437 \u0437\u0430 \u0440\u0430\u0437\u043e\u043c \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u042f \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 Rspotify \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0430\u0434\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b <em>\u0443\u0447\u0438\u0442\u044c\u0441\u044f<\/em>. \u0423 \u043c\u0435\u043d\u044f \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0438 \u0434\u0435\u0434\u043b\u0430\u0439\u043d\u043e\u0432, \u043d\u0438 \u0441\u0442\u0440\u0435\u0441\u0441\u0430, \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u0432 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432 \u043c\u0435\u0440\u0443 \u0441\u0438\u043b \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 Rust. \u0418 \u044f \u043c\u043d\u043e\u0433\u043e\u0435 <em>\u0432\u044b\u0443\u0447\u0438\u043b<\/em>; \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0438 \u0432\u044b \u0442\u043e\u0436\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e. <\/p>\n<p>\u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u043c\u043e\u0440\u0430\u043b\u044c \u0441\u0442\u0430\u0442\u044c\u0438 \u0442\u0430\u043a\u043e\u0432\u0430: \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e Rust \u2014 \u044d\u0442\u043e, \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u044f\u0437\u044b\u043a, \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u0449\u0438 \u0432 \u043d\u0451\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u0435 \u043f\u0440\u0438\u0431\u0435\u0433\u0430\u044f \u043a \u0447\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e\u043c\u0443 \u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u044e. \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044e, \u043a\u0430\u043a \u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 Rust \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0448\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/p>\n<h2>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/h2>\n<p>[1]\u00a0\u00a0<a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/issues\/112#issuecomment-683266508\" rel=\"noopener noreferrer nofollow\">Cleaning up the\u00a0blocking\u00a0module\u00a0ramsayleung\/rspotify#112\u00a0<em>(\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438)<\/em><\/a><\/p>\n<p>[2]\u00a0<a href=\"https:\/\/github.com\/seanmonstar\/reqwest\/blob\/0.10.x\/src\/blocking\/client.rs#L757\" rel=\"noopener noreferrer nofollow\">reqwest\/src\/blocking\/client.rs @ line 757\u2009\u2014\u2009GitHub<\/a><\/p>\n<p>[3]\u00a0\u00a0<a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/issues\/112#issuecomment-683249563\" rel=\"noopener noreferrer nofollow\">Cleaning up the\u00a0blocking\u00a0module\u00a0ramsayleung\/rspotify#112\u00a0<em>(\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438)<\/em><\/a><\/p>\n<p>[4]\u00a0<a href=\"https:\/\/github.com\/rust-lang\/cargo\/blob\/master\/src\/doc\/src\/reference\/features.md#feature-unification\" rel=\"noopener noreferrer nofollow\">Cargo\u2019s Documentation, \u201cFeature unification\u201d<\/a><\/p>\n<p>[5]\u00a0\u00a0<a href=\"https:\/\/github.com\/fMeow\/arangors\/issues\/37\" rel=\"noopener noreferrer nofollow\">Proposal: Move\u00a0sync\u00a0and\u00a0async\u00a0features into seperate modules\u00a0fMeow\/arangors#37<\/a><\/p>\n<p>[6]\u00a0<a href=\"https:\/\/gitlab.com\/qonfucius\/aragog\/-\/blob\/0.140.0\/src\/lib.rs#L488\" rel=\"noopener noreferrer nofollow\">aragog\/src\/lib.rs @ line 488\u2009\u2014\u2009GitLab<\/a><\/p>\n<p>[7]\u00a0<a href=\"https:\/\/github.com\/TheDan64\/inkwell\/blob\/bfb0e32bc329fd35f6c5a529a1a6209936a147f8\/src\/lib.rs#L107\" rel=\"noopener noreferrer nofollow\">inkwell\/src\/lib.rs @ line 107\u2009\u2014\u2009GitHub<\/a><\/p>\n<p>[8]\u00a0<a href=\"https:\/\/github.com\/Arnavion\/k8s-openapi\/blob\/v0.13.0\/build.rs#L31\" rel=\"noopener noreferrer nofollow\">k8s-openapi\/build.rs @ line 31\u2009\u2014\u2009GitHub<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \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\/825480\/\"> https:\/\/habr.com\/ru\/articles\/825480\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 <\/h2>\n<p>\u041f\u0440\u0438\u0441\u0430\u0436\u0438\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u043f\u043e\u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438 \u043f\u043e\u0441\u043b\u0443\u0448\u0430\u0439\u0442\u0435 \u0441\u0442\u0430\u0440\u0438\u043a\u043e\u0432\u0441\u043a\u0443\u044e \u0431\u0430\u0439\u043a\u0443: \u0447\u0442\u043e \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u043a\u043e\u0433\u0434\u0430 \u044f \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b \u0443 Rust \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e\u0433\u043e. <\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 Rust \u043d\u043e\u0432\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443. \u0412\u0441\u0451, \u0447\u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u2014 \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0451 \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 API, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u0430\u043a\u043e\u043c\u0443-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <a href=\"https:\/\/developer.spotify.com\/documentation\/web-api\/\" rel=\"noopener noreferrer nofollow\">Spotify API<\/a>\u00a0\u0438\u043b\u0438, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0432 API \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u043a\u0430\u0436\u0435\u043c,\u00a0<a href=\"https:\/\/www.arangodb.com\/\" rel=\"noopener noreferrer nofollow\">ArangoDB<\/a>. \u041d\u0435 \u0442\u0430\u043a \u044d\u0442\u043e \u0438 \u0442\u044f\u0436\u0435\u043b\u043e: \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u0432\u044b \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0435\u0442\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e, \u0432\u0430\u043c \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u043e \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u044f\u043c\u043e\u043b\u0438\u043d\u0435\u0439\u043d\u043e. \u00a0<\/p>\n<p>\u0412\u044b \u0440\u0435\u0448\u0430\u0435\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c async. \u0420\u0430\u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0430\u0448\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u0432\u0432\u043e\u0434\/\u0432\u044b\u0432\u043e\u0434, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0437\u0434\u0435\u0441\u044c async \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e (\u043a\u0441\u0442\u0430\u0442\u0438, \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0442\u0435\u0445 \u0444\u0438\u0448\u0435\u043a, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0442\u0430\u043a \u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d Rust). \u0412\u044b \u0441\u0430\u0434\u0438\u0442\u0435\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u2014 \u0438 \u0432\u043e\u0442, \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u0443 \u0432\u0430\u0441 \u0433\u043e\u0442\u043e\u0432\u0430 \u0432\u0435\u0440\u0441\u0438\u044f v0.1.0. \u00ab\u041f\u0440\u0438\u044f\u0442\u043d\u043e\u00bb, \u2014 \u0434\u0443\u043c\u0430\u0435\u0442\u0435 \u0432\u044b, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e cargo publish\u00a0\u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0432\u0430\u0448\u0443 \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u00a0<a href=\"https:\/\/crates.io\/\" rel=\"noopener noreferrer nofollow\">crates.io<\/a>.<\/p>\n<p>\u041f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439, \u0438 \u0432\u0430\u043c \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0435\u0442 \u043d\u043e\u0432\u043e\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0441 GitHub. \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u0442\u043e-\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u043b \u0442\u0435\u043c\u0443: <\/p>\n<h2>\u0410 \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e?<\/h2>\n<p>\u0412 \u043c\u043e\u0451\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f async \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. \u042f \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0443 \u043d\u043e\u0432\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u043d\u043e \u043d\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u043a\u0430\u043a \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0442\u044c. \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u043d\u0435 \u0440\u0435\u0448\u0443\u0441\u044c \u043f\u043e\u0432\u0441\u044e\u0434\u0443 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043c\u043e\u0439 \u043a\u043e\u0434 <code>block_on(endpoint())<\/code>. \u042f \u0432\u0438\u0434\u0435\u043b \u043a\u0440\u0435\u0439\u0442\u044b \u0432\u0440\u043e\u0434\u0435\u00a0<a href=\"https:\/\/crates.io\/crates\/reqwest\" rel=\"noopener noreferrer nofollow\">reqwest<\/a>, \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439 <a href=\"https:\/\/docs.rs\/reqwest\/0.11.4\/reqwest\/blocking\/index.html\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0434\u0443\u043b\u044c\u00a0<\/a> \u0440\u043e\u0432\u043d\u043e \u0441 \u0442\u0435\u043c \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0438 \u0432\u0430\u043c \u0442\u0430\u043a \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0442\u044c? <\/p>\n<p>\u0412 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0442\u0430\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0439. \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0431\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u0430\u043a \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u2014 \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0440\u043e\u0434\u0435 <a href=\"https:\/\/crates.io\/crates\/tokio\" rel=\"noopener noreferrer nofollow\">tokio<\/a>, \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0435 \u0444\u0443\u0442\u0443\u0440\u044b, \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u0435, \u0442.\u0434.? \u042f \u0438\u043c\u0435\u044e \u0432 \u0432\u0438\u0434\u0443, \u043c\u0435\u043d\u044f \u0432\u0435\u0436\u043b\u0438\u0432\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u0432\u0441\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043a\u043e\u0434\u0435 \u043a\u043e\u0435-\u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430\u00a0async\u00a0\u0438\u00a0await, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u0437\u044b\u0441\u043a\u043e\u0432 \u0442\u0443\u0442 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f. <\/p>\n<p>\u0427\u0442\u043e \u0436,\u00a0<em>\u0431\u043e\u043b\u0435\u0435 \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0435<\/em> \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u0441 \u043a\u0440\u0435\u0439\u0442\u043e\u043c\u00a0<a href=\"https:\/\/crates.io\/crates\/rspotify\" rel=\"noopener noreferrer nofollow\">rspotify<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 <a href=\"https:\/\/github.com\/ramsayleung\/\" rel=\"noopener noreferrer nofollow\">Ramsay<\/a>, \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u043c. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u2014 \u044d\u0442\u043e \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0434\u043b\u044f Spotify Web API. \u0414\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f: \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u044f \u0434\u043e\u0431\u0438\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u0445\u043e\u0442\u044f, \u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0438 \u043d\u0435 \u0441\u0442\u043e\u043b\u044c \u0447\u0438\u0441\u0442\u044b\u043c, \u043a\u0430\u043a \u044f \u043d\u0430\u0434\u0435\u044f\u043b\u0441\u044f.<\/p>\n<h2>\u041f\u0435\u0440\u0432\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b<\/h2>\n<p>\u0427\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0432 \u043e\u0431\u0449\u0438\u0445 \u0447\u0435\u0440\u0442\u0430\u0445 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u043b\u0438\u0435\u043d\u0442 Rspotify:<\/p>\n<pre><code class=\"rust\">struct Spotify { \/* ... *\/ }  impl Spotify {     async fn some_endpoint(&amp;self, param: String) -> SpotifyResult&lt;String> {         let mut params = HashMap::new();         params.insert(\"param\", param);          self.http.get(\"\/some-endpoint\", params).await     }<\/code><\/pre>\n<p>\u0412 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043a\u043e\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435\u00a0<code>some_endpoint<\/code> \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043a\u0430\u043a \u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c, \u0442\u0430\u043a \u0438 \u0432 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0435\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441: \u043a\u0430\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a? \u0418 \u043a\u0430\u043a \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c? \u00a0<\/p>\n<h2>\u0421\u0442\u0430\u0440\u0430\u044f \u0434\u043e\u0431\u0440\u0430\u044f \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0430<\/h2>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0431\u044b\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u041e\u043d \u0431\u044b\u043b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b. \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u043a\u043e\u0434 \u0432 \u043d\u043e\u0432\u044b\u0439\u00a0<a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/tree\/v0.9\/src\/blocking\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0434\u0443\u043b\u044c blocking \u0432 Rspotify<\/a>. \u0417\u0434\u0435\u0441\u044c\u00a0<a href=\"https:\/\/docs.rs\/reqwest\" rel=\"noopener noreferrer nofollow\">reqwest<\/a>\u00a0(\u043d\u0430\u0448 HTTP-\u043a\u043b\u0438\u0435\u043d\u0442) \u0438\u00a0<a href=\"https:\/\/docs.rs\/reqwest\/latest\/reqwest\/blocking\/index.html\" rel=\"noopener noreferrer nofollow\">reqwest::blocking<\/a>\u00a0\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, async\u00a0\u0438\u043b\u0438\u00a0.await\u00a0\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043d\u043e\u0432\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 reqwest::blocking\u00a0\u0432\u043c\u0435\u0441\u0442\u043e\u00a0reqwest.<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c Rspotify \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c\u00a0<code>rspotify::blocking::Client<\/code>\u00a0\u0432\u043c\u0435\u0441\u0442\u043e <code>rspotify::Client<\/code> \u2014 \u0438 \u0432\u0443\u0430\u043b\u044f! \u041a\u043e\u0434 \u0441\u0442\u0430\u043b \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u043c. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441 async, \u043f\u043e\u043b\u0443\u0447\u0430\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0444\u0438\u0447, \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c\u00a0blocking\u00a0\u2014 \u0438 \u0434\u0435\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e.<\/p>\n<p>\u041f\u043e\u0437\u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u044f\u0441\u043d\u0438\u043b\u0430\u0441\u044c. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043a\u043e\u0434\u0430 \u0432 \u043a\u0440\u0435\u0439\u0442\u0435 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0438\u043b\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u044e\u0449\u0443\u044e\u0441\u044f, \u0442\u043e \u0432\u0441\u0451 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u0438\u0441\u0430\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0434\u0432\u0430\u0436\u0434\u044b.<\/p>\n<p>\u0412 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u0432\u0443\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0434\u043e\u0441\u043a\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0435. \u0412\u043e\u043e\u0431\u0449\u0435, \u044d\u0442\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f, \u043d\u043e \u0432\u0434\u0440\u0443\u0433 \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0432\u0441\u0435 \u0442\u0435\u0441\u0442\u044b! \u0412\u044b \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0434\u0443\u043c\u0430\u043b\u0438? \u041d\u0435\u0441\u0447\u0430\u0441\u0442\u043d\u043e\u043c\u0443 \u0440\u0435\u0446\u0435\u043d\u0437\u0435\u043d\u0442\u0443 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0434\u0432\u0430\u0436\u0434\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d \u0441 \u043e\u0431\u0435\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u2014 \u0438 \u0442\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<p>\u041f\u043e \u043d\u0430\u0448\u0435\u043c\u0443 \u043e\u043f\u044b\u0442\u0443, \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0451\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 Rspotify, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f, \u0438 \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432, \u043d\u0435 \u043f\u0440\u0438\u0432\u044b\u043a\u0448\u0438\u0445 \u043a \u0442\u0430\u043a\u0438\u043c \u043c\u044b\u0442\u0430\u0440\u0441\u0442\u0432\u0430\u043c. \u041d\u0430 \u043f\u0440\u0430\u0432\u0430\u0445 \u043d\u043e\u0432\u043e\u0438\u0441\u043f\u0435\u0447\u0451\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430 \u043f\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 Rspotify, \u044f \u0441 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0437\u043c\u043e\u043c \u043f\u0440\u0438\u043d\u044f\u043b\u0441\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c,\u00a0<a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/issues\/112\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u043a\u0438\u0435 \u0435\u0449\u0451 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b<\/a>.<\/p>\n<p><strong>\u0412\u044b\u0437\u043e\u0432\u00a0block_on<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/pull\/120\" rel=\"noopener noreferrer nofollow\">\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434<\/a>\u00a0\u2014 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u0451\u0440\u0442\u043a\u0438 \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0432\u043d\u0443\u0442\u0440\u0438\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435\u00a0<a href=\"https:\/\/docs.rs\/tokio\/latest\/tokio\/runtime\/struct.Runtime.html#method.block_on\" rel=\"noopener noreferrer nofollow\">block_on<\/a>.\u00a0block_on\u00a0\u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0444\u0443\u0442\u0443\u0440\u0443 \u0434\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043e\u043d\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0442\u0430\u043d\u0435\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439. \u0412\u0430\u043c \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u00a0<em>\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f<\/em> \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437:<\/p>\n<pre><code class=\"ruby\">mod blocking {     struct Spotify(super::Spotify);      impl Spotify {         fn endpoint(&amp;self, param: String) -> SpotifyResult&lt;String> {             runtime.block_on(async move {                 self.0.endpoint(param).await             })         }     }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c\u00a0<code>block_on<\/code>, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <a href=\"https:\/\/crates.io\/crates\/tokio\" rel=\"noopener noreferrer nofollow\">tokio<\/a>\u00a0:<\/p>\n<pre><code class=\"rust\">let mut runtime = tokio::runtime::Builder::new()     .basic_scheduler()     .enable_all()     .build()     .unwrap();<\/code><\/pre>\n<p>\u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441: \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u043a \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435, \u043b\u0438\u0431\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435? \u041c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0451 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 (<em>ewwww<\/em>) \u0438\u043b\u0438, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u043b\u0443\u0447\u0448\u0435, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435\u00a0Spotify. \u041d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u0441\u0440\u0435\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u043d\u043e\u0441\u0438\u0442\u0441\u044f<em> \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u0430\u044f<\/em>\u00a0\u0441\u0441\u044b\u043b\u043a\u0430, \u0435\u0451 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0432 <code>Arc&lt;Mutex&lt;T>><\/code>, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0433\u0443\u0431\u0438\u0432 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u0443 \u0432\u0430\u0441 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435. \u042d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <a href=\"https:\/\/docs.rs\/tokio\/latest\/tokio\/runtime\/struct.Handle.html\" rel=\"noopener noreferrer nofollow\">Handle<\/a> \u0438\u0437 Tokio, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"rust\">use tokio::runtime::Runtime;  lazy_static! { \/\/ \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f `once_cell`     static ref RT: Runtime = Runtime::new().unwrap(); }  fn endpoint(&amp;self, param: String) -> SpotifyResult&lt;String> {     RT.handle().block_on(async move {         self.0.endpoint(param).await     })<\/code><\/pre>\n<p>\u041f\u0440\u0438\u0442\u043e\u043c, \u0447\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0448 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435\u00a0<a href=\"https:\/\/nullderef.com\/blog\/rust-async-sync\/#block-on-perf\" rel=\"noopener noreferrer nofollow\">[1]<\/a>, \u0437\u0434\u0435\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u0443\u0436\u0435\u043d <a href=\"https:\/\/crates.io\/crates\/reqwest\" rel=\"noopener noreferrer nofollow\">reqwest<\/a>, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e, \u043e\u043d \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u043f\u043e\u0442\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u00a0block_on, \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0439 \u0443 \u043a\u0430\u043d\u0430\u043b\u0430 \u0441 \u0437\u0430\u0434\u0430\u043d\u0438\u044f\u043c\u0438\u00a0<a href=\"https:\/\/nullderef.com\/blog\/rust-async-sync\/#block-on-channels\" rel=\"noopener noreferrer nofollow\">[2]<\/a>\u00a0<a href=\"https:\/\/nullderef.com\/blog\/rust-async-sync\/#block-on-reqwest\" rel=\"noopener noreferrer nofollow\">[3]<\/a>.<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0442\u0430\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u043e \u0441\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438. \u0412\u044b \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0442\u0430\u043a\u0438\u0435 futures\u00a0\u0438\u043b\u0438\u00a0tokio, \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435 \u0438\u0445 \u0432 \u0432\u0430\u0448 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b. \u0412\u0441\u0451 \u044d\u0442\u043e \u0440\u0430\u0434\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b\u2026 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434. \u0417\u0430 \u044d\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043d\u043e \u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443 \u0432\u0430\u0441 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430. \u041f\u0443\u0441\u0442\u044c \u044d\u0442\u043e \u0438 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043d\u043e \u043e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f.\u00a0<a href=\"https:\/\/crates.io\/crates\/reqwest\" rel=\"noopener noreferrer nofollow\">reqwest<\/a>\u00a0\u2014 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u0438 \u0442\u0430\u043c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u043c\u043e\u0436\u043d\u043e \u0441\u0435\u0431\u0435 \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c blocking. \u041d\u043e \u0432 \u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u043a\u0440\u0435\u0439\u0442\u0435, \u0442\u0430\u043a\u043e\u043c \u043a\u0430\u043a\u00a0rspotify, \u044d\u0442\u043e \u0432\u044b\u0442\u044f\u043d\u0443\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435. <\/p>\n<h2>\u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0440\u0435\u0439\u0442\u0430<\/h2>\n<p>\u0421\u0443\u0434\u044f \u043f\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u2014 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u0440\u0435\u0439\u0442\u044b. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c\u00a0rspotify-sync\u00a0\u0438\u00a0rspotify-async, \u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441\u0430\u043c\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0438 \u0431\u044b, \u043a\u0430\u043a\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043e\u043d\u0438 \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u2014 \u0434\u0430\u0436\u0435 \u0434\u0432\u0430, \u0435\u0441\u043b\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. \u041d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u0442\u0430 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u0440\u0435\u0439\u0442\u0430?\u00a0<a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/pull\/253\" rel=\"noopener noreferrer nofollow\">\u041c\u043d\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u00a0\u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0438\u043d\u0430\u0447\u0435, \u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u043a \u0441\u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043a\u0440\u0435\u0439\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c<\/a>, \u0434\u0430\u0436\u0435 \u0446\u0435\u043d\u043e\u0439 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0443\u0445\u0438\u0449\u0440\u0435\u043d\u0438\u0439 \u0441 Cargo: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430 Cargo.toml, \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0440\u0435\u0439\u0442 (\u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u044d\u0442\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e).<\/p>\n<p>\u0412\u043e\u043e\u0440\u0443\u0436\u0438\u0432\u0448\u0438\u0441\u044c \u0442\u0430\u043a\u043e\u0439 \u0438\u0434\u0435\u0435\u0439, \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u044b\u043c\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u0430\u043c\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0432\u0437\u044f\u0442\u044c \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u0440\u0435\u0439\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u0430. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0431\u044b \u043f\u0438\u0441\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0441 \u043a\u043e\u0434\u043e\u043c \u043d\u0430 Rust, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u0430\u043a async\/.await. \u041d\u043e, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u044d\u0442\u0430 \u0442\u0435\u043c\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 \u0441\u0442\u0430\u0442\u044c\u0438. <\/p>\n<p><strong>\u0412\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b: \u043a\u0440\u0435\u0439\u0442 maybe_async\u00a0<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/ramsayleung\/rspotify\/pull\/129\" rel=\"noopener noreferrer nofollow\">\u041d\u0430\u0448\u0430 \u0442\u0440\u0435\u0442\u044c\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430<\/a>\u00a0\u0431\u0430\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u043a\u0440\u0435\u0439\u0442\u0435 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <a href=\"https:\/\/crates.io\/crates\/maybe_async\" rel=\"noopener noreferrer nofollow\">maybe_async<\/a>\u00a0. \u041f\u043e\u043c\u043d\u044e, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u043f\u043e \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u0438 \u0441\u0447\u0451\u043b \u0435\u0433\u043e \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u043c.<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0438\u0434\u0435\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u0440\u0435\u0439\u0442\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0438\u0437 \u043a\u043e\u0434\u0430 \u0432\u0441\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u00a0<code>async<\/code>\u00a0\u0438\u00a0<code>.await<\/code>\u00a0\u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e\u0433\u043e \u043c\u0430\u043a\u0440\u043e\u0441\u0430. \u0422\u0430\u043a \u043c\u044b, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"rust\">#[maybe_async::maybe_async] async fn endpoint() { \/* \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b *\/ }<\/code><\/pre>\n<p>\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"rust\">#[cfg(not(feature = \"is_sync\"))] async fn endpoint() { \/* \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b *\/ }  #[cfg(feature = \"is_sync\")] fn endpoint() { \/* \u0443\u0434\u0430\u043b\u0438\u043b\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441 `.await` *\/ }<\/code><\/pre>\n<p>\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u2014 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0438\u043b\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u0438\u0447\u0438 maybe_async\/is_sync\u00a0\u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u0440\u0435\u0439\u0442\u0430. \u0414\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u043a\u0440\u043e\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438, \u0442\u0438\u043f\u0430\u0436\u0430\u043c\u0438 \u0438 \u0431\u043b\u043e\u043a\u0430\u043c\u0438\u00a0impl. \u0415\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e async\u00a0\u0438\u00a0.await, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u044b\u0445 \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432 async_impl\u00a0\u0438\u00a0sync_impl. \u042d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e, \u0438 \u043c\u044b \u0443\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u0435\u0451 \u0432 Rspotify \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043e\u043d\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0434\u043d\u043e\u0439, \u0447\u0442\u043e \u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0443 Rspotify\u00a0<em>\u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u0430 http-\u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/em>. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u0430\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043e\u043a, \u0447\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u00a0<em>\u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u0430 async\/sync<\/em>. \u0422\u0430\u043a \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e HTTP-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/crates.io\/crates\/reqwest\" rel=\"noopener noreferrer nofollow\">reqwest<\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/crates.io\/crates\/ureq\" rel=\"noopener noreferrer nofollow\">ureq<\/a>, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c \u0438\u043b\u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442.<\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0443\u00a0<em>\u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u0430 http-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 <\/em>\u043d\u0435 \u0442\u0430\u043a \u0441\u043b\u043e\u0436\u043d\u043e<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-390047","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/390047","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=390047"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/390047\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=390047"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=390047"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=390047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}