{"id":45110,"date":"2022-12-30T17:22:14","date_gmt":"2023-01-22T05:48:26","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/45110-2\/"},"modified":"2024-04-29T07:42:50","modified_gmt":"2024-04-28T23:42:50","slug":"45110-2","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/45110-2\/","title":{"rendered":""},"content":{"rendered":"<p>\u3053\u306e\u8a18\u4e8b\u306f 2018 \u5e74\u306e\u975e\u540c\u671f Rust \u306e\u52d5\u5411\u8abf\u67fb \u306e\u7d9a\u5831\u3067\u3059\u3002<\/p>\n<h2>TL;DR<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Rust 1.39.0 \u4ee5\u964d\u3067 async\/await \u69cb\u6587\u304c\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Future \u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u306f\u3044\u307e\u307e\u3067 tokio \u3060\u3051\u3067\u3057\u305f\u304c\u3001\u5225\u306b async-std \u3068\u3044\u3046\u306e\u304c\u3067\u304d\u307e\u3057\u305f<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">async\/await \u3092\u4f7f\u3046\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u9078\u3076\u3068\u304d\u306f\u3053\u306e\uff12\u3064\u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u306e\u3069\u3061\u3089\u3067\u52d5\u304f\u306e\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u7279\u306b\u7406\u7531\u304c\u306a\u3051\u308c\u3070 tokio \u3092\u4f7f\u3046\u306e\u304c\u3044\u3044\u3067\u3057\u3087\u3046\u3002<\/ul>\n<h2>2018 \u5e74\u304b\u3089\u306e\u5dee\u5206<\/h2>\n<p>\u4e00\u5e74\u524d\u304b\u3089\u975e\u540c\u671f Rust \u3092\u8ffd\u3044\u304b\u3051\u3066\u3044\u308b\u4eba\u5411\u3051\u306e\u60c5\u5831\u3067\u3059\u3002<\/p>\n<h2>\u7d44\u7e54\u306e\u518d\u7de8<\/h2>\n<p>\u6628\u5e74\u306f async\/await \u3092 stabilize \u3055\u305b\u308b\u305f\u3081\u306e async-foundations \u3068\u30c4\u30fc\u30eb\u30c1\u30a7\u30fc\u30f3\u3092\u8abf\u67fb\u3059\u308b web-foundations \u3068\u3044\u3046\u30b0\u30eb\u30fc\u30d7\u304c\u767a\u8db3\u3057\u307e\u3057\u305f\u3002 \u3057\u304b\u3057\u8af8\u4e8b\u60c5\u306b\u3088\u308a Async Foundations WG \u3068 Async Ecosystem WG (rustasync) \u306b\u518d\u7de8\u3055\u308c\u307e\u3057\u305f\u3002\u5f79\u5272\u306f\u307b\u307c\u540c\u3058\u3067\u3059\u3002 async\/await stabilize \u3055\u308c\u305f\u306e\u3061 Async Ecosystem WG\u3000\u306f\u89e3\u6563\u3001 Async Foundations WG \u306f async-book \u306e\u7de8\u7e82\u3092\u3057\u3066\u3044\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<h2>rustasync \u304b\u3089 async-rs \u3078<\/h2>\n<p>rustasync \u30c1\u30fc\u30e0\u306f Web \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af Tide \u3084\u975e\u540c\u671f\u30e9\u30f3\u30bf\u30a4\u30e0\u306e romio \u3068 julix \u3001\u305d\u306e\u4e0a\u306b\u69cb\u7bc9\u3057\u305f\u975e\u540c\u671f\u30e9\u30f3\u30bf\u30a4\u30e0\u306e\u62bd\u8c61 rustasync\/runtime \u304a\u3088\u3073 runtime-native \u3068 runtime-tokio \u3001 runtime-wasm \u3092\u4f5c\u308b\u306a\u3069\u3001 std \u76f8\u5f53\u306e\u5b89\u5b9a\u3057\u305f\u975e\u540c\u671f\u30c4\u30fc\u30eb\u30c1\u30a7\u30fc\u30f3\u306e\u6574\u5099\u306b\u5411\u3051\u3066\u6d3b\u52d5\u3057\u3066\u3044\u307e\u3057\u305f\u3002 \u3068\u3053\u308d\u304c \u65b9\u91dd\u304c\u5909\u308f\u308a runtime \u30af\u30ec\u30fc\u30c8\u306b\u3088\u308b\u62bd\u8c61\u5316\u3092\u3084\u3081\u3066 tokio \u3068\u306f\u307e\u3063\u305f\u304f\u5225\u306e\u975e\u540c\u671f\u30e9\u30f3\u30bf\u30a4\u30e0\u306e async-std \u3092\u958b\u767a\u3057\u307e\u3057\u305f\u3002 rustasync \u30c1\u30fc\u30e0 \u306f Async Ecosystem WG \u4ea1\u304d\u5f8c\u3082 async-rs \u3068 http-rs \u306b\u540d\u524d\u3092\u5909\u3048\u3066 \u975e\u540c\u671f rust \u74b0\u5883\u306e\u6574\u5099\u306b\u5411\u3051\u3066\u6d3b\u52d5\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h2>tokio \u3068 async-std \u306e\u9055\u3044<\/h2>\n<p>tokio \u3068 async-std \u306f TcpStream \u3001 UdpStream\u3001 Timer \u306a\u3069\u306e\u5b9f\u88c5\u65b9\u5f0f\u304c\u9055\u3046\u305f\u3081\u3001\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002<br \/>\n\u73fe\u5728\u306f tokio\u3001async-std\u3001\u304a\u3088\u3073 tokio \u30d9\u30fc\u30b9\u306e actix-net \u30e9\u30f3\u30bf\u30a4\u30e0\u306b\u57fa\u3065\u304f3\u3064\u306e\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u304c\u4e26\u7acb\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<div>\n<div class=\"post-table\">runtime<a href=\"https:\/\/github.com\/tokio-rs\/tokio\" target=\"_blank\" rel=\"nofollow noopener\">tokio<\/a><a href=\"https:\/\/github.com\/async-rs\/async-std\" target=\"_blank\" rel=\"nofollow noopener\">async-std<\/a><a href=\"https:\/\/github.com\/actix\/actix-net\/tree\/master\/actix-rt\" target=\"_blank\" rel=\"nofollow noopener\">actix-rt<\/a><br \/>\n(tokio)schedulerwork-stealingwork-stealingactor &amp; worker-poolmain<a href=\"https:\/\/docs.rs\/tokio\/0.2.10\/tokio\/attr.main.html\" target=\"_blank\" rel=\"nofollow noopener\">tokio::main<\/a>,<br \/>\n<a href=\"https:\/\/docs.rs\/tokio\/0.2.10\/tokio\/attr.test.html\" target=\"_blank\" rel=\"nofollow noopener\">tokio::test<\/a><a href=\"https:\/\/docs.rs\/async-std\/1.4.0\/async_std\/attr.main.html\" target=\"_blank\" rel=\"nofollow noopener\">async_std::main<\/a>,<br \/>\n<a href=\"https:\/\/docs.rs\/async-std\/1.4.0\/async_std\/attr.test.html\" target=\"_blank\" rel=\"nofollow noopener\">async_std::test<\/a><a href=\"https:\/\/docs.rs\/actix-rt\/1.0.0\/actix_rt\/attr.main.html\" target=\"_blank\" rel=\"nofollow noopener\">actix_rt::main<\/a>,<br \/>\n<a href=\"https:\/\/docs.rs\/actix-rt\/1.0.0\/actix_rt\/attr.test.html\" target=\"_blank\" rel=\"nofollow noopener\">actix_rt::test<\/a>block_on<a href=\"https:\/\/docs.rs\/tokio\/0.2.10\/tokio\/runtime\/struct.Runtime.html#method.block_on\" target=\"_blank\" rel=\"nofollow noopener\">tokio::runtime::Runtime::block_on<\/a><a href=\"https:\/\/docs.rs\/async-std\/1.4.0\/async_std\/task\/fn.block_on.html\" target=\"_blank\" rel=\"nofollow noopener\">async_std::block_on<\/a><a href=\"https:\/\/docs.rs\/actix-rt\/1.0.0\/actix_rt\/struct.SystemRunner.html#method.block_on\" target=\"_blank\" rel=\"nofollow noopener\">actix_rt::SystemRunner::block_on<\/a>,<br \/>\n<a href=\"https:\/\/docs.rs\/actix-rt\/1.0.0\/actix_rt\/struct.Runtime.html#method.block_on\" target=\"_blank\" rel=\"nofollow noopener\">actix_rt::Runtime::block_on<\/a>http trait<a href=\"https:\/\/github.com\/tower-rs\/tower\" target=\"_blank\" rel=\"nofollow noopener\">tower<\/a>,<br \/>\n<a href=\"https:\/\/github.com\/tower-rs\/tower-http\" target=\"_blank\" rel=\"nofollow noopener\">tower-http<\/a>,<br \/>\n<a href=\"https:\/\/crates.io\/crates\/tower-http-service\" target=\"_blank\" rel=\"nofollow noopener\">tower-http-service<\/a><a href=\"https:\/\/crates.io\/crates\/http-service\" target=\"_blank\" rel=\"nofollow noopener\">http-service<\/a>,<br \/>\n<a href=\"https:\/\/crates.io\/crates\/http-client\" target=\"_blank\" rel=\"nofollow noopener\">http-client<\/a><a href=\"https:\/\/github.com\/actix\/actix-web\/tree\/maaster\/actix-http\" target=\"_blank\" rel=\"nofollow noopener\">actix-http<\/a>http-client<a href=\"https:\/\/crates.io\/crates\/reqwest\" target=\"_blank\" rel=\"nofollow noopener\">reqwest<\/a><a href=\"https:\/\/crates.io\/crates\/surf\" target=\"_blank\" rel=\"nofollow noopener\">surf<\/a><a href=\"https:\/\/crates.io\/crates\/awc\" target=\"_blank\" rel=\"nofollow noopener\">awc<\/a>http-server<a href=\"https:\/\/crates.io\/crates\/hyper\" target=\"_blank\" rel=\"nofollow noopener\">hyper<\/a><a href=\"https:\/\/crates.io\/crates\/http-service-hyper\" target=\"_blank\" rel=\"nofollow noopener\">http-service-hyper<\/a><a href=\"https:\/\/github.com\/actix\/actix-web\/tree\/maaster\/actix-http\" target=\"_blank\" rel=\"nofollow noopener\">actix-http<\/a>web framework<a href=\"https:\/\/crates.io\/crates\/warp\" target=\"_blank\" rel=\"nofollow noopener\">warp<\/a><a href=\"https:\/\/crates.io\/crates\/tide\" target=\"_blank\" rel=\"nofollow noopener\">tide<\/a><a href=\"https:\/\/github.com\/actix\/actix-web\" target=\"_blank\" rel=\"nofollow noopener\">actix-web<\/a>logger<a href=\"https:\/\/crates.io\/crates\/tracing\" target=\"_blank\" rel=\"nofollow noopener\">tracing<\/a><a href=\"https:\/\/crates.io\/crates\/async-log\" target=\"_blank\" rel=\"nofollow noopener\">async-log<\/a><a href=\"https:\/\/github.com\/actix\/actix-net\/tree\/master\/actix-tracing\" target=\"_blank\" rel=\"nofollow noopener\">actix-tracing<\/a>timer<a href=\"https:\/\/docs.rs\/tokio\/0.2.10\/tokio\/time\/index.html\" target=\"_blank\" rel=\"nofollow noopener\">tokio::time<\/a><a href=\"https:\/\/github.com\/async-rs\/futures-timer\" target=\"_blank\" rel=\"nofollow noopener\">futures-timer<\/a>,<br \/>\n<a href=\"https:\/\/docs.rs\/async-std\/1.4.0\/async_std\/future\/fn.timeout.html\" target=\"_blank\" rel=\"nofollow noopener\">async_std::future::timeout<\/a><a href=\"https:\/\/docs.rs\/actix-rt\/1.0.0\/actix_rt\/time\/index.html\" target=\"_blank\" rel=\"nofollow noopener\">actix_rt::time<\/a><br \/>\n(tokio)tls<a href=\"https:\/\/crates.io\/crates\/tokio-tls\" target=\"_blank\" rel=\"nofollow noopener\">tokio-tls<\/a>,<br \/>\n<a href=\"https:\/\/crates.io\/crates\/tokio-rustls\" target=\"_blank\" rel=\"nofollow noopener\">tokio-rustls<\/a><a href=\"https:\/\/crates.io\/crates\/async-tls\" target=\"_blank\" rel=\"nofollow noopener\">async-tls<\/a>,<br \/>\n<a href=\"https:\/\/crates.io\/crates\/async-native-tls\" target=\"_blank\" rel=\"nofollow noopener\">async-native-tls<\/a><a href=\"https:\/\/github.com\/actix\/actix-net\/tree\/master\/actix-tls\" target=\"_blank\" rel=\"nofollow noopener\">actix-tls<\/a>tcp &amp; udptokioasync-std<a href=\"https:\/\/crates.io\/crates\/actix-net\" target=\"_blank\" rel=\"nofollow noopener\">actix-net<\/a><br \/>\n(tokio)<\/div>\n<\/div>\n<p>\u3082\u3068\u3082\u3068\u3053\u306e\u3088\u3046\u306a\u4e8b\u614b\u3092\u907f\u3051\u308b\u305f\u3081\u306b runtime \u30af\u30ec\u30fc\u30c8\u304c\u958b\u767a\u3055\u308c\u3066\u305f\u306e\u3067\u3059\u304c\u3001 runtime \u306f rustasync \u306e\u89e3\u6563\u3068\u3068\u3082\u306b\u958b\u767a\u7d42\u4e86 \u3057\u307e\u3057\u305f\u3002\u307e\u305f rustasync \u30c1\u30fc\u30e0\u306e\u300cstd \u76f8\u5f53\u306e\u5b89\u5b9a\u3057\u305fAPI\u3092\u6301\u3064\u975e\u540c\u671f\u30e9\u30f3\u30bf\u30a4\u30e0\u3092\u63d0\u4f9b\u3057\u305f\u3044\u300d\u3068\u3044\u3046\u601d\u60d1\u3068 tokio \u30c1\u30fc\u30e0\u306e\u958b\u767a\u65b9\u91dd\u304c\u4e00\u81f4\u3057\u306a\u304b\u3063\u305f\u3053\u3068\u304c\u3000rustasync \u30c1\u30fc\u30e0\u304c tokio \u3068\u306f\u5225\u306b async-std \u3092\u958b\u767a\u3057\u305f\u539f\u56e0\u306e\u3088\u3046\u3067\u3059\u3002<\/p>\n<h3>\u203b #[main] async main \u306b\u3064\u3044\u3066<\/h3>\n<p>Tcp, Udp, tokio-timer \u306a\u3069\u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u56fa\u6709\u306e\u6a5f\u80fd\u3092\u4f7f\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u305d\u308c\u305e\u308c\u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u56fa\u6709\u306e #[main] \u3092\u4f7f\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>async-std \u306e\u4e2d\u3067 requwest (tokio::net) \u3092\u4f7f\u3046\u3068\u2026\u2026<\/p>\n<pre class=\"post-pre\"><code><span class=\"nd\">#[async_std::main]<\/span>\r\n<span class=\"k\">async<\/span> <span class=\"k\">fn<\/span> <span class=\"nf\">main<\/span><span class=\"p\">()<\/span> <span class=\"k\">-&gt;<\/span> <span class=\"n\">Result<\/span><span class=\"o\">&lt;<\/span><span class=\"p\">(),<\/span> <span class=\"nn\">reqwest<\/span><span class=\"p\">::<\/span><span class=\"n\">Error<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nn\">reqwest<\/span><span class=\"p\">::<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"s\">\"http:\/\/example.com\"<\/span><span class=\"p\">)<\/span><span class=\"k\">.await<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span> <span class=\"c\">\/\/ thread 'main' panicked at 'not currently running on the Tokio runtime.'<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>tokio \u306e\u4e2d\u3067 surf (async-std) \u3092\u4f7f\u3046\u3068\u2026\u2026<\/p>\n<pre class=\"post-pre\"><code><span class=\"nd\">#[tokio::main]<\/span>\r\n<span class=\"k\">async<\/span> <span class=\"k\">fn<\/span> <span class=\"nf\">main<\/span><span class=\"p\">()<\/span> <span class=\"k\">-&gt;<\/span> <span class=\"n\">Result<\/span><span class=\"o\">&lt;<\/span><span class=\"p\">(),<\/span> <span class=\"nn\">surf<\/span><span class=\"p\">::<\/span><span class=\"n\">Exception<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nn\">surf<\/span><span class=\"p\">::<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"s\">\"http:\/\/example.com\/\"<\/span><span class=\"p\">)<\/span><span class=\"k\">.await<\/span><span class=\"o\">?<\/span><span class=\"nf\">.body_string<\/span><span class=\"p\">()<\/span><span class=\"k\">.await<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u2026\u2026\u30d1\u30cb\u30c3\u30af\u3057\u307e\u305b\u3093\u3002\u5b9f\u306f surf 1.0.3 \u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067 \u30d6\u30ed\u30c3\u30ad\u30f3\u30b0 IO \u306e libcurl \u3092\u30b9\u30ec\u30c3\u30c9\u3067\u5f85\u3064\u3053\u3068\u3067\u52d5\u304b\u3057\u3001 features= [&#8220;hyper-client&#8221;, &#8220;hyper-tls&#8221;, &#8220;native-tls&#8221;] \u3092\u3064\u3051\u308b\u3068\u5185\u90e8\u3067 runtime-tokio \u3092\u547c\u3076 \u306e\u3067\u52d5\u304f\u306e\u3067\u3059\u3002(\u304a\u305d\u3089\u304f hyper \u76f8\u5f53\u306e http \u30e9\u30a4\u30d6\u30e9\u30ea\u3092 tokio \u3068\u306f\u5225\u306b\u4f5c\u308b\u306e\u304c\u56f0\u96e3\u306a\u305f\u3081)<\/p>\n<h3>\u203b block_on \u306b\u3064\u3044\u3066<\/h3>\n<p>Tcp, Udp, tokio-timer \u306a\u3069\u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u56fa\u6709\u306e\u6a5f\u80fd\u3092\u4f7f\u3063\u3066\u3044\u308b\u5834\u5408\u3001 futures::executor::block_on \u306f\u4f7f\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002<br \/>\n\u305d\u308c\u305e\u308c\u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u56fa\u6709\u306e block_on \u3092\u4f7f\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>futures::executor::block_on \u3067 tcp (tokio::net) \u3092\u4f7f\u3046\u3068\u2026\u2026<\/p>\n<pre class=\"post-pre\"><code><span class=\"nn\">futures<\/span><span class=\"p\">::<\/span><span class=\"nn\">executor<\/span><span class=\"p\">::<\/span><span class=\"nf\">block_on<\/span><span class=\"p\">(<\/span><span class=\"k\">async<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nn\">reqwest<\/span><span class=\"p\">::<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"s\">\"http:\/\/example.com\/\"<\/span><span class=\"p\">)<\/span><span class=\"k\">.await<\/span><span class=\"nf\">.ok<\/span><span class=\"p\">();<\/span> <span class=\"c\">\/\/ thread 'main' panicked at 'not currently running on the Tokio runtime.'<\/span>\r\n<span class=\"p\">});<\/span>\r\n<\/code><\/pre>\n<p>\u30d1\u30cb\u30c3\u30af\u3057\u307e\u3059\u3002<\/p>\n<p>futures::executor::block_on \u3067 timer (tokio::time) \u3092\u4f7f\u3046\u3068\u2026\u2026<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">use<\/span> <span class=\"nn\">std<\/span><span class=\"p\">::<\/span><span class=\"nn\">time<\/span><span class=\"p\">::<\/span><span class=\"n\">Duration<\/span><span class=\"p\">;<\/span>\r\n\r\n<span class=\"nn\">futures<\/span><span class=\"p\">::<\/span><span class=\"nn\">executor<\/span><span class=\"p\">::<\/span><span class=\"nf\">block_on<\/span><span class=\"p\">(<\/span><span class=\"k\">async<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nn\">tokio<\/span><span class=\"p\">::<\/span><span class=\"nn\">time<\/span><span class=\"p\">::<\/span><span class=\"nf\">delay_for<\/span><span class=\"p\">(<\/span><span class=\"nn\">Duration<\/span><span class=\"p\">::<\/span><span class=\"nf\">from_millis<\/span><span class=\"p\">(<\/span><span class=\"mi\">10<\/span><span class=\"p\">))<\/span><span class=\"k\">.await<\/span><span class=\"p\">;<\/span> <span class=\"c\">\/\/ thread 'main' panicked at 'no current timer'<\/span>\r\n<span class=\"p\">});<\/span>\r\n<\/code><\/pre>\n<p>\u30d1\u30cb\u30c3\u30af\u3057\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u3088\u3046\u306b\u73fe\u5728\u306e rust \u3067\u306f\u3069\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u304c tokio | async-std \u3067\u52d5\u304f\u306e\u304b\u3092\u898b\u5206\u3051\u308b\u306e\u306f\u5927\u5909\u56f0\u96e3\u3067\u3059\u3002<\/p>\n<h2>actix-web \u306b\u3064\u3044\u3066<\/h2>\n<p>actix-web \u306f\u3082\u3068\u3082\u3068 tokio-core \u3092\u4f7f\u3063\u305f\u30a2\u30af\u30bf\u30fc\u30e9\u30a4\u30d6\u30e9\u30ea actix \u3092\u5143\u306b\u4f5c\u3089\u308c\u305f Web \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3001\u3053\u308c\u306f\u30b7\u30f3\u30b0\u30eb\u30b9\u30ec\u30c3\u30c9\u306e tokio-core \u3092\u4f7f\u3063\u305f\u30ef\u30fc\u30ab\u30fc\u30d7\u30fc\u30eb\u306e\u4e0a\u306b\u30a2\u30af\u30bf\u30fc\u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u3092\u8f09\u305b\u308b\u3082\u306e\u3067\u3057\u305f\u3002\u3068\u3053\u308d\u304c tokio \u306e\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u5316\u3068\u3068\u3082\u306b\u3001\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u7248 tokio \u3068\u306f\u5c11\u3057\u6319\u52d5\u306e\u9055\u3046\u72ec\u81ea\u30e9\u30f3\u30bf\u30a4\u30e0(actix-rt)\u3068\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\u3002\u305d\u306e\u305f\u3081\u3001 actix-rt \u306e\u4e0a\u3067 tokio::blocking \u306a\u3069\u306e\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9 tokio \u56fa\u6709\u306e\u6a5f\u80fd\u3092\u4f7f\u3046\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u3055\u3089\u306b\u3001 actix-web \u306f actix-http \u3068\u3044\u3046\u72ec\u81ea\u306e http \u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001\u3053\u308c\u3082 hyper \u3092\u5229\u7528\u3057\u305f\u307b\u304b\u306e\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u3068\u306f\u4e00\u7dda\u3092\u753b\u3057\u3066\u3057\u307e\u3059\u3002<\/p>\n<h2>wasm-bindgen \u3068 Promise \u306b\u3064\u3044\u3066<\/h2>\n<p>wasm-bindgen \u3092\u3064\u304b\u3046\u3053\u3068\u3067 JS \u306e Promise \u3092 Rust \u3067 await \u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u3053\u308c\u306f wasm \u30db\u30b9\u30c8\u74b0\u5883\u306e JavaScript \u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u306e setTimeout \u3084 Promise \u306a\u3069\u3092\u4f7f\u3063\u305f\u975e\u540c\u671f\u30e9\u30f3\u30bf\u30a4\u30e0\u3068\u307f\u306a\u305b\u307e\u3059\u3002\u4f8b\u3048\u3070 reqwest \u306f wasm \u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u53ef\u80fd\u3067\u3001 http client \u306e\u5b9f\u88c5\u306f fetch API \u3092\u4f7f\u3063\u3066\u3044\u307e\u3059\u3002\u8a73\u7d30\u306f wasm-pack \u3067 JS \u306e Promise \u3092 await \u3067\u304d\u308b\u975e\u540c\u671f Rust \u3092\u66f8\u3044\u3066 node.js \u3067\u52d5\u304b\u3059 \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h2>\u305d\u306e\u4ed6\u306e\u30e9\u30f3\u30bf\u30a4\u30e0<\/h2>\n<p>rust \u306e async \u30e9\u30f3\u30bf\u30a4\u30e0\u306f\u8ab0\u3067\u3082\u4f5c\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3000tokio \u3084 async-std \u306e\u4ed6\u306b\u3082\u7d44\u307f\u8fbc\u307f\u5411\u3051\u306e\u30e9\u30f3\u30bf\u30a4\u30e0 embrio \u3084 Google \u304c\u958b\u767a\u4e2d\u306e fuchsia OS \u3067\u4f7f\u308f\u308c\u3066\u3044\u308b \u30e9\u30f3\u30bf\u30a4\u30e0 \u3082\u3042\u308b\u3088\u3046\u3067\u3059\u3002fuchsia \u306b\u3064\u3044\u3066\u306f Async Interview #2: cramertj \u304c\u8a73\u3057\u3044\u3067\u3059\u3002<\/p>\n<h2>\u4f55\u3092\u4f7f\u3048\u3070\u3044\u3044\u306e\uff1f<\/h2>\n<p>async-std \u306f\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u306f\u767b\u5834\u3057\u3066\u307e\u3060\u534a\u5e74\u3082\u7d4c\u3063\u3066\u304a\u3089\u305a 2020 \u5e74\u73fe\u5728\u307e\u3060\u307e\u3060\u958b\u767a\u4e2d\u3067\u3059\u3002 tokio \u306e\u4e0a\u3067 reqwest \u3068 warp (\u307e\u305f\u306f rweb) \u3092\u4f7f\u3046\u306e\u304c\u3044\u3044\u3068\u601d\u3044\u307e\u3059\u3002 AWS \u3067\u306f rusoto \u304a\u3088\u3073 aws-lambda-rust-runtime \u3092\u4f7f\u3046\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002 \u3069\u3061\u3089\u3082 futures-0.3 \u3084 tokio 0.2 \u306b\u672a\u5bfe\u5fdc(2020-01-26\u73fe\u5728) \u3067\u3059\u3002 \u7279\u306b rusoto \u306f tokio-compat \u3084 futures-compat \u306a\u3069\u3092\u4f7f\u3046\u3053\u3068\u306b\u306a\u308b\u3067\u3057\u3087\u3046\u3002mysql \u3084 postgres \u3092 diesel \u3067\u4f7f\u3044\u305f\u3044\u4eba\u306f\u3001diesel \u306f\u307e\u3060\u975e\u540c\u671f IO \u306b\u5bfe\u5fdc\u3057\u3066\u3044\u306a\u3044 \u306e\u3067 r2d2 \u3067\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30d7\u30fc\u30ea\u30f3\u30b0\u3092\u3057\u305f\u4e0a\u3067 actix-rt \u306e worker \u3092\u4f7f\u3046\u304b tokio::blocking \u3092\u4f7f\u3046\u306a\u3069\u306e\u5de5\u592b\u304c\u5fc5\u8981\u3067\u3059\u3002redis \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f redis-rs \u3067\u3044\u3044\u3067\u3057\u3087\u3046\u3002<\/p>\n<p>\u305f\u3060\u73fe\u6642\u70b9\u3067\u306f actix-web \u306e\u307b\u3046\u304c\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306f\u5145\u5b9f\u3057\u3066\u3044\u307e\u3059\u3002\u53c2\u8003\u306b\u306a\u308a\u305d\u3046\u306a\u30ea\u30dd\u30b8\u30c8\u30ea\u3078\u306e\u30ea\u30f3\u30af\u306f\u3053\u3061\u3089\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">https:\/\/github.com\/actix\/examples<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">https:\/\/github.com\/actix\/book<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">https:\/\/github.com\/seanmonstar\/warp\/tree\/master\/examples<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">https:\/\/github.com\/kaj\/warp-diesel-ructe-sample<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">https:\/\/github.com\/kud1ing\/Warp-Book<\/ul>\n<p>\u3068\u306f\u3044\u3048 Rust \u306e\u975e\u540c\u671f\u74b0\u5883\u306f\u3088\u3046\u3084\u304f core::future \u3068 async\/await \u304c\u5165\u3063\u305f\u6bb5\u968e\u3067\u3001\u4eca\u5f8c\u3069\u3046\u306a\u3063\u3066\u3044\u304f\u306e\u304b\u306f\u307e\u3060\u307e\u3060\u4e0d\u900f\u660e\u3067\u3059\u3002<\/p>\n<h1>2019-01 \u304b\u3089 2020-05 \u307e\u3067\u306e\u6642\u7cfb\u5217<\/h1>\n<p>\u592a\u5b57\u8a18\u4e8b\u306f Rust \u306e async\/await \u306b\u3064\u3044\u3066\u306e\u7279\u306b\u30aa\u30b9\u30b9\u30e1\u306e\u8a18\u4e8b\u3001\u304a\u3088\u3073\u5f71\u97ff\u306e\u5927\u304d\u306a\u8a18\u4e8b\u3067\u3059\u3002<\/p>\n<h2>2020-07<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2020-07-07 &#8211; __<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Concurrency Patterns in Embedded Rust__ &#8211; https:\/\/ferrous-systems.com\/blog\/embedded-concurrency-patterns\/<\/ul>\n<\/li>\n<\/ul>\n<p>2020-07-09 &#8211; Async Interview #8: Stjepan Glavina &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2020\/07\/09\/async-interview-8-stjepan-glavina\/#bridging-the-sync-vs-sync-worlds<\/p>\n<h2>2020-05<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2020-05-06 &#8211; Notes on io-uring &#8211; https:\/\/boats.gitlab.io\/blog\/post\/io-uring\/<\/ul>\n<\/li>\n<\/ul>\n<p>2020-05-06 &#8211; A practical introduction to async programming in Rust &#8211; https:\/\/jamesmcm.github.io\/blog\/2020\/05\/06\/a-practical-introduction-to-async-programming-in-rust\/<\/p>\n<p>2020-05-09 &#8211; no_std async\/await &#8211; soon on stable &#8211; https:\/\/ferrous-systems.com\/blog\/stable-async-on-embedded\/<\/p>\n<p>2020-05-09 &#8211; io_uring\u30e1\u30e2 &#8211; https:\/\/scrapbox.io\/ubnt-intrepid-pub\/io_uring%E3%83%A1%E3%83%A2<\/p>\n<p>2020-05-10 &#8211; blocking 0.2.0 &#8211; https:\/\/mobile.twitter.com\/stjepang\/status\/1259201346642853892<\/p>\n<p>2020-05-14 &#8211; &#8220;Safe bindings to io-uring.&#8221;<\/p>\n<p>https:\/\/twitter.com\/withoutboats\/status\/1260295418132549638 &#8211; https:\/\/github.com\/withoutboats\/ringbahn<\/p>\n<p>2020-05-27 &#8211; Ringbahn: a safe, ergonomic API for io-uring in Rust &#8211; https:\/\/boats.gitlab.io\/blog\/post\/ringbahn\/<\/p>\n<h2>2020-04<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2020-04-01 &#8211; Reducing tail latencies with automatic cooperative task yielding &#8211; https:\/\/tokio.rs\/blog\/2020-04-preemption\/<\/ul>\n<\/li>\n<\/ul>\n<p>2020-04-03 &#8211; Why I&#8217;m building a new async runtime &#8211; https:\/\/stjepang.github.io\/2020\/04\/03\/why-im-building-a-new-async-runtime.html<\/p>\n<p>2020-04-05 &#8211; State of Rust Web Frameworks (Server, DB) &#8211; https:\/\/dev.to\/readredready\/state-of-rust-web-frameworks-server-3g42<\/p>\n<p>2020-04-09 &#8211; Go vs Rust : \u7279\u5fb4\u91cfDB\u306b\u9069\u3059\u308b\u306e\u306f\u3069\u3063\u3061\uff01\uff1f &#8211; https:\/\/tech-blog.abeja.asia\/entry\/2020\/04\/09\/115152<\/p>\n<p>2020-04-13 &#8211; Wiremock: async HTTP mocking to test Rust applications &#8211; https:\/\/www.lpalmieri.com\/posts\/2020-04-13-wiremock-async-http-mocking-for-rust-applications\/<\/p>\n<p>2020-04-18 &#8211;<br \/>\nComfy web services in Rust &#8211; https:\/\/meh.schizofreni.co\/2020-04-18\/comfy-web-services-in-rust<\/p>\n<p>2020-04-27 &#8211; soml 0.1.0 &#8211; https:\/\/crates.io\/crates\/smol<\/p>\n<p>2020-04-27 &#8211; feat: use smol as runtime #757 &#8211; https:\/\/github.com\/async-rs\/async-std\/pull\/757<\/p>\n<p>2020-04-30 &#8211; Async interviews: my take thus far &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2020\/04\/30\/async-interviews-my-take-thus-far\/<br \/>\n2020-04-29 &#8211; Rust\u306easync\/await\u3068\u30b9\u30b1\u30b8\u30e5\u30fc\u30e9\u306e\u8a71 \/ rust-async-await &#8211; https:\/\/speakerdeck.com\/osuke\/rust-async-await<\/p>\n<h2>2020-03<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2020-03-09 &#8211;<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Rewriting the heart of our sync engine &#8211; https:\/\/dropbox.tech\/infrastructure\/rewriting-the-heart-of-our-sync-engine<\/ul>\n<\/li>\n<\/ul>\n<p>2020-03-10 &#8211; Async Interview #7: withoutboats &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2020\/03\/10\/async-interview-7-withoutboats\/<\/p>\n<p>2020-03-10 &#8211; Practical examples of the Rust async ecosystem &#8211; https:\/\/github.com\/benkay86\/async-applied<\/p>\n<p>2020-03-12 &#8211; waitmap &#8211; an async awaitable map -https:\/\/boats.gitlab.io\/blog\/post\/waitmap\/<\/p>\n<p>2020-03-17 &#8211; PARALLEL-STREAM &#8211; https:\/\/blog.yoshuawuyts.com\/parallel-stream\/<\/p>\n<p>2020-03-18 &#8211; Announcing Rust IPFS, and a call for contributors &#8211; https:\/\/blog.ipfs.io\/2020-03-18-announcing-rust-ipfs\/<\/p>\n<p>2020-03-20 &#8211; Rust Async and the Terrible, Horrible, No Good, Very Bad Day<br \/>\nMy (mis)adventures with async, tokio, and async_std &#8211; https:\/\/medium.com\/@KevinHoffman\/rust-async-and-the-terrible-horrible-no-good-very-bad-day-348ebc836274<\/p>\n<p>2020-03-25 &#8211; tokio-async-std &#8211; https:\/\/github.com\/wusyong\/tokio-async-std<\/p>\n<p>2020-03-27 &#8211; Writing an OS in Rust Philipp Oppermann&#8217;s blog &#8211; Async\/Await &#8211; https:\/\/os.phil-opp.com\/async-await\/<\/p>\n<p>2020-03-31 &#8211; Async HTTP Talk about Async HTTP for the Rust &amp; Tell Berlin meetup &#8211; https:\/\/speakerdeck.com\/yoshuawuyts\/async-http<\/p>\n<h2>2020-02<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2020-02-01 &#8211; Implementing a Copyless Redis Protocol in Rust with Parsing Combinators &#8211; https:\/\/dpbriggs.ca\/blog\/Implementing-A-Copyless-Redis-Protocol-in-Rust-With-Parsing-Combinators<\/ul>\n<\/li>\n<\/ul>\n<p>2020-02-01 &#8211; Writing AWS Lambda Functions with Bastion &#8211; https:\/\/blog.bastion.rs\/2020\/02\/01\/writing-aws-lambda-functions-with-bastion.html<\/p>\n<p>2020-02-01 &#8211; How we migrate our framework into async\/await &#8211; https:\/\/medium.com\/@pailee.wai\/how-we-migrate-our-framework-into-async-await-c67b160e16be<\/p>\n<p>2020-02-05 &#8211; Why Discord is switching from Go to Rust &#8211; https:\/\/blog.discordapp.com\/why-discord-is-switching-from-go-to-rust-a190bbca2b1f<\/p>\n<p>2020-02-07 &#8211; The std::future::Future of Rusoto &#8211; https:\/\/linuxwit.ch\/blog\/2020\/02\/the-future-of-rusoto\/<\/p>\n<p>2020-02-08 &#8211; __Bringing async\/await to embedded Rust &#8211; https:\/\/ferrous-systems.com\/blog\/embedded-async-await\/<\/p>\n<p>2020-02-06 &#8211; Futures Explained in 200 lines of Rust &#8211; https:\/\/cfsamson.github.io\/books-futures-explained\/<\/p>\n<p>2020-02-11 &#8211; Async Interview #6: Eliza Weisman &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2020\/02\/11\/async-interview-6-eliza-weisman\/<\/p>\n<p>2020-02-11 &#8211; A primer to Rust Async &#8211; https:\/\/omarabid.com\/async-rust<\/p>\n<p>2020-02-15 &#8211; rusoto \u304c async\/.await \u5bfe\u5fdc\u3057\u305f\u306e\u3092\u304d\u3063\u304b\u3051\u306b\u3055\u308f\u3063\u3066\u307f\u305f\u96d1\u611f &#8211; https:\/\/rohki.hatenablog.com\/entry\/2020\/02\/15\/215157<\/p>\n<h2>2020-01<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2020-01-01 &#8211; Actix Web: Optimization Amongst Optimizations &#8211; https:\/\/brandur.org\/nanoglyphs\/008-actix<\/ul>\n<\/li>\n<\/ul>\n<p>2020-01-04 &#8211; rust on heroku with async\/await and tokio &#8211; https:\/\/www.ultrasaurus.com\/2020\/01\/rust-on-heroku-with-async-await-and-tokio\/<\/p>\n<p>2020-01-07 &#8211; Farewell to Rusoto &#8211; https:\/\/matthewkmayer.github.io\/blag\/public\/post\/farewell-rusoto\/<\/p>\n<p>rusoto \u306e\u5143\u306e\u958b\u767a\u8005\u304c\u5f15\u9000<\/p>\n<p>2020-01-09 &#8211; Towards a Rust foundation &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2020\/01\/09\/towards-a-rust-foundation\/<\/p>\n<p>2020-01-09 &#8211; Is there a good read on different async runtimes? &#8211; https:\/\/users.rust-lang.org\/t\/is-there-a-good-read-on-different-async-runtimes\/36678<\/p>\n<p>2020-01-09 &#8211; A simple Telegram bot in Rust with Actix &#8211; https:\/\/qiita.com\/kimagure\/items\/830924fd5e8e2950b6e4<\/p>\n<p>2020-01-11 &#8211; \u3044\u3061\u3070\u3093\u30b7\u30f3\u30d7\u30eb\u306a\u975e\u540c\u671f Rust \u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u3092\u81ea\u4f5c\u3059\u308b + Heap Timer &#8211; https:\/\/qiita.com\/legokichi\/items\/1beb3dce317ef45a927b<\/p>\n<p>2020-01-13 &#8211; Async Interview #4: Florian Gilcher &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2020\/01\/13\/async-interview-4-florian-gilcher\/<\/p>\n<p>2020-01-13 &#8211; Building a Microservice with Rust &#8211; https:\/\/diego-pacheco.blogspot.com\/2020\/01\/building-microservice-with-rust.html<\/p>\n<p>2020-01-13 &#8211; The Why, What, and How of Pinning in Rust &#8211; https:\/\/dev.to\/iam_aprogrammer\/pinning-asynchronous-programming-in-rust-why-what-and-how-3eal &#8211; https:\/\/www.youtube.com\/watch?v=DwY2KkCX59w<\/p>\n<p>2020-01-14 &#8211; hyper-async-std &#8211; Attempt at using hyper with the async-std runtime &#8211; https:\/\/github.com\/leo-lb\/hyper-async-std<\/p>\n<p>2020-01-14 &#8211; Tonic: 0.1 has arrived! &#8211; https:\/\/luciofran.co\/tonic-0-1-release\/<\/p>\n<p>2019-01-14 &#8211; Understanding Tokio, pt. 2 &#8211; https:\/\/blog.troutwine.us\/2020\/01\/14\/understanding-tokio-pt-2\/<\/p>\n<p>2020-01-16 &#8211; Can hyper work with async-std instead of Tokio? &#8211; https:\/\/github.com\/hyperium\/hyper\/issues\/2111<\/p>\n<p>2020-01-16 &#8211; warp v0.2 &#8211; https:\/\/seanmonstar.com\/post\/190293882502\/warp-v02<\/p>\n<p>2020-01-16 &#8211; __Epoll, Kqueue and IOCP Explained with Rust &#8211; Cross Platform Event Queues Explained With __ust &#8211; https:\/\/cfsamsonbooks.gitbook.io\/epoll-kqueue-iocp-explained\/<\/p>\n<p>2020-01-17 &#8211; Impact of Mozilla layoffs (and future profitability) on Rust\u2019s development and future? &#8211; https:\/\/users.rust-lang.org\/t\/impact-of-mozilla-layoffs-and-future-profitability-on-rusts-development-and-future\/37011<\/p>\n<p>mozilla \u306e\u30ec\u30a4\u30aa\u30d5\u3067 Rust \u958b\u767a\u8005\u304c\u6e1b\u3063\u305f\u8a71<\/p>\n<p>2020-01-17 &#8211; Smoke-testing Rust HTTP clients &#8211; https:\/\/medium.com\/@shnatsel\/smoke-testing-rust-http-clients-b8f2ee5db4e6<\/p>\n<p>2020-01-17 &#8211; Actix project postmortem &#8211; https:\/\/github.com\/actix\/actix-web-postmortem<\/p>\n<p>2020-01-17 &#8211; What is going on? #1 https:\/\/github.com\/actix\/actix-web-postmortem\/issues\/1<\/p>\n<p>2020-01-17 &#8211; A sad day for Rust actix-web is dead. &#8211; https:\/\/words.steveklabnik.com\/a-sad-day-for-rust<\/p>\n<p>2020-01-17 &#8211; Actix-net unsoundness patch &#8220;is boring&#8221; &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/epszt7\/actixnet_unsoundness_patch_is_boring\/<\/p>\n<p>2020-01-17 &#8211; I am done with open source. &#8211; https:\/\/mobile.twitter.com\/fafhrd91\/status\/1218135374339301378<\/p>\n<p>2020-01-18 &#8211; actix\/actix-net#83, actix\/actix-net#87 &#8211; https:\/\/gist.github.com\/bb010g\/705c8ffe4b9db9550a7782d25e5a53be<\/p>\n<p>2020-01-18 &#8211; My experience porting old Rust Futures to async\/await &#8211; https:\/\/medium.com\/dwelo-r-d\/my-experience-porting-old-rust-futures-to-async-await-744430e9c576<\/p>\n<p>2020-01-19 &#8211; My FOSS Story &#8211; https:\/\/blog.burntsushi.net\/foss\/<\/p>\n<p>2020-01-19 &#8211; Error Handling Examples &#8211; https:\/\/github.com\/seanmonstar\/warp\/issues\/388<\/p>\n<p>2019-01-19 &#8211; Synchronized Asynchronous Job Runner in Rust &#8211; https:\/\/www.zupzup.org\/rust-job-runner\/<\/p>\n<p>2020-01-20 &#8211; Async Interview #5: Steven Fackler &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2020\/01\/20\/async-interview-5-steven-fackler\/<\/p>\n<p>2020-01-20 &#8211; Project future #1289 &#8211; https:\/\/github.com\/actix\/actix-web\/issues\/1289<\/p>\n<p>2020-01-20 &#8211; Actix-web is back in the main repo with a note from the Nikolay Kim &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/erdklb\/actixweb_is_back_in_the_main_repo_with_a_note\/<\/p>\n<p>2020-01-20 &#8211; macros to help using warp &#8211; https:\/\/github.com\/seanmonstar\/warp\/issues\/395<\/p>\n<p>2020-01-21 &#8211; Steps forward &#8211; https:\/\/github.com\/actix\/actix-web\/issues\/1291<\/p>\n<p>2020-01-21 &#8211; https:\/\/twitter.com\/JustM0nik4\/status\/1219302277690748928?s=20<\/p>\n<p>2020-01-21 &#8211; The Thank You Thread &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/ereh5h\/the_thank_you_thread\/<\/p>\n<p>2020-01-21 &#8211; Is this a rewrite of rumqtt? &#8211; https:\/\/github.com\/tekjar\/rumq\/issues\/19<\/p>\n<p>2020-01-22 &#8211; Lessons learnt updating a library to std::future &#8211; https:\/\/cetra3.github.io\/blog\/mpart-async-0-3-0\/<\/p>\n<p>2020-01-22 &#8211; Rust 2020 roadmap #2857 &#8211; https:\/\/github.com\/rust-lang\/rfcs\/pull\/2857<\/p>\n<p>2020-01-22 &#8211; Returning Trait Objects &#8211; http:\/\/bryce.fisher-fleig.org\/blog\/returning-trait-objects\/index.html<\/p>\n<p>2020-01-25 &#8211; rweb: generate openapi spec file automatically from rust source code &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/etcev1\/rweb_generate_openapi_spec_file_automatically\/<\/p>\n<p>2020-01-25 &#8211; Build your own block_on() &#8211; https:\/\/stjepang.github.io\/2020\/01\/25\/build-your-own-block-on.html<\/p>\n<p>2020-01-25 &#8211; support OpenApi #89 Please check kdy1\/rweb &#8211; https:\/\/github.com\/seanmonstar\/warp\/issues\/89#issuecomment-578340768<\/p>\n<p>2020-01-25 &#8211; A stack-less Rust coroutine library under 100 LoC &#8211; https:\/\/blog.aloni.org\/posts\/a-stack-less-rust-coroutine-100-loc\/<\/p>\n<p>2020-01-25 &#8211; Actix(Rust) it&#8217;s blazing fast &#8211; https:\/\/diego-pacheco.blogspot.com\/2020\/01\/actixrust-its-blazing-fast.html<\/p>\n<p>2020-01-25 &#8211; How to use Rust Warp &#8211; https:\/\/www.steadylearner.com\/blog\/read\/How-to-use-Rust-Warp<\/p>\n<p>2020-01-25 &#8211; Generator Resume Arguments &#8211; https:\/\/github.com\/rust-lang\/rust\/pull\/68524<\/p>\n<p>2020-01-27 &#8211; https:\/\/mobile.twitter.com\/ubnt_intrepid\/status\/1221750942099337216<\/p>\n<p>2020-01-27 &#8211; 500K pps with tokio &#8211; https:\/\/dwarfhack.com\/posts\/tech\/tokio_pps\/<\/p>\n<p>2020-01-29 &#8211; TIDE CHANNELS &#8211; https:\/\/blog.yoshuawuyts.com\/tide-channels\/<\/p>\n<p>2020-01-30 &#8211; New age of Bastion &#8211; https:\/\/blog.bastion.rs\/2020\/01\/30\/new-age-of-bastion.html<\/p>\n<p>2020-01-31 &#8211; Build your own executor &#8211; https:\/\/stjepang.github.io\/2020\/01\/31\/build-your-own-executor.html<\/p>\n<h2>2019-12<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2019-12-01 &#8211; Implementing pid1 with Rust and async\/await &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/e42mio\/implementing_pid1_with_rust_and_asyncawait\/ &#8211; https:\/\/tech.fpcomplete.com\/rust\/pid1<\/ul>\n<\/li>\n<\/ul>\n<p>2019-12-01 &#8211; Application State &#8211; https:\/\/github.com\/trezm\/Thruster\/issues\/130<\/p>\n<p>2019-12-01 &#8211; \u306a\u305casync\u306e\u4e2d\u3067format!\u3092\u4f7f\u3046\u3068\u30a8\u30e9\u30fc\u304c\u51fa\u308b\u306e\u304b &#8211; https:\/\/qiita.com\/__pandaman64__\/items\/2c2864259e0d99be964c<\/p>\n<p>2019-12-01 &#8211; Rust Advent Calendar 2019 1\u65e5\u76ee Rust \u306e\u975e\u540c\u671f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30e2\u30c7\u30eb\u306f\u30e9\u30f3\u30bf\u30a4\u30e0\u89b3\u70b9\u3060\u3068 Go \u306e\u305d\u308c\u306b\u4f3c\u3066\u3044\u308b &#8211; https:\/\/keno-ss.hatenadiary.org\/entry\/2019\/12\/01\/235828<\/p>\n<p>2019-12-02 &#8211; Structured Concurrency Support &#8211; https:\/\/github.com\/tokio-rs\/tokio\/issues\/1879<\/p>\n<p>2019-12-02 &#8211; http v0.2 &#8211; https:\/\/seanmonstar.com\/post\/189439210962\/http-v02<\/p>\n<p>2019-12-04 &#8211; rust-async-std-tokio-compat &#8211; Compatibility layer between async-std and tokio network streams &#8211; async-std to tokio streams &#8211; https:\/\/github.com\/jedisct1\/rust-async-std-tokio-compat<\/p>\n<p>2019-12-06 &#8211; okapi v0.2.0 &#8211; https:\/\/github.com\/GREsau\/okapi\/releases\/tag\/v0.2.0<\/p>\n<p>2019-12-08 &#8211; Rust Gets Async-Await &#8211; https:\/\/www.i-programmer.info\/news\/98-languages\/13233-rust-gets-async-await.html<\/p>\n<p>2019-12-09 &#8211; Async Interview #2: cramertj &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2019\/12\/09\/async-interview-2-cramertj\/<\/p>\n<p>2019-12-10 &#8211; Async Interview #2: cramertj, part 2 &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2019\/12\/10\/async-interview-2-cramertj-part-2\/<\/p>\n<p>2019-12-11 &#8211; Async Interview #2: cramertj, part 3 &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2019\/12\/11\/async-interview-2-cramertj-part-3\/<\/p>\n<p>2019-12-10 &#8211; rumq v0.1.0-alpha.1 &#8211; https:\/\/github.com\/tekjar\/rumq\/releases\/tag\/v0.1.0-alpha.1<\/p>\n<p>2019-12-11 &#8211; Actix runtime v1.0.0 &#8211; https:\/\/github.com\/actix\/actix-net\/releases\/tag\/rt-1.0.0<\/p>\n<p>2019-12-11 &#8211; hyper v0.13.0 &#8211; https:\/\/github.com\/hyperium\/hyper\/releases\/tag\/v0.13.0<\/p>\n<p>2019-12-13 &#8211; async-std v1.3.0 &#8211; https:\/\/github.com\/async-rs\/async-std\/releases\/tag\/v1.3.0<\/p>\n<p>2019-12-14 &#8211; wasm-pack \u3067 JS \u306e Promise \u3092 await \u3067\u304d\u308b\u975e\u540c\u671f Rust \u3092\u66f8\u3044\u3066 node.js \u3067\u52d5\u304b\u3059 &#8211; https:\/\/qiita.com\/legokichi\/items\/dcd7d1ecd6c9b5c877d7<\/p>\n<p>2019-12-16 &#8211; Stop worrying about blocking: the new async-std runtime, inspired by Go &#8211; https:\/\/async.rs\/blog\/stop-worrying-about-blocking-the-new-async-std-runtime\/<\/p>\n<p>2019-12-16 &#8211; New scheduler resilient to blocking &#8211; https:\/\/github.com\/async-rs\/async-std\/pull\/631<\/p>\n<p>2019-12-17 &#8211; Tokio Roadmap to 1.0 &#8211; https:\/\/github.com\/tokio-rs\/tokio\/pull\/1965<\/p>\n<p>2019-12-17 &#8211; Announcing Mio 0.7-alpha.1 &#8211; https:\/\/tokio.rs\/blog\/2019-12-mio-v0.7-alpha.1\/<\/p>\n<p>2019-12-17 &#8211; Rust no-std\u306easync\u5b8c\u5168\u7406\u89e3\u3092\u76ee\u6307\u305d\u3046\uff01 &#8211; https:\/\/tomo-wait-for-it-yuki.hatenablog.com\/entry\/2019\/12\/17\/073126<\/p>\n<p>2019-12-18 &#8211; http-client 1.1.1 &#8211; https:\/\/github.com\/http-rs\/http-client\/releases\/tag\/1.1.1<\/p>\n<p>2019-12-18 &#8211; tokio-compat 0.11 &#8211; https:\/\/github.com\/tokio-rs\/tokio-compat\/releases\/tag\/0.1.1<br \/>\n2019-12-18 &#8211; Announcing Tokio-Compat &#8211; https:\/\/tokio.rs\/blog\/2019-12-compat\/<\/p>\n<p>2019-12-20 &#8211; Do you plan to migrate from tokio to async-std when it matures ? &#8211; https:\/\/github.com\/actix\/actix-net\/issues\/79<\/p>\n<p>2019-12-20 &#8211; async fn and async block not support task::current().id(),how to get Coroutines id? &#8211; https:\/\/github.com\/tokio-rs\/tokio\/issues\/1996<\/p>\n<p>2019-12-20 &#8211; tower 0.3.0 &#8211; https:\/\/github.com\/tower-rs\/tower\/releases\/tag\/tower-0.3.0<\/p>\n<p>2019-12-20 &#8211; wasm-bindgen &#8211; 0.2.56 &#8211; https:\/\/github.com\/rustwasm\/wasm-bindgen\/releases\/tag\/0.2.56 &#8211; https:\/\/github.com\/rustwasm\/wasm-bindgen\/blob\/66e48bd1681fab6ce99a8e3d9230efebaa24d67f\/CHANGELOG.md#0256<\/p>\n<p>wasm-bindgen \u3067 JS \u306e Promise \u3092 Future \u306b\u3057\u3066 await \u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u305f<\/p>\n<p>2019-12-21 &#8211; tide 0.5.0 &#8211; https:\/\/github.com\/http-rs\/tide\/releases\/tag\/0.5.0<\/p>\n<p>2019-12-22 &#8211; How to Detect Accidental Blocking Code in Async Rust &#8211; https:\/\/rickyhan.com\/jekyll\/update\/2019\/12\/22\/convert-to-async-rust.html<\/p>\n<p>2019-12-21 &#8211; async-std v1.4.0 &#8211; https:\/\/github.com\/async-rs\/async-std\/releases\/tag\/v1.4.0<\/p>\n<p>2019-12-21 &#8211; STREAMS CONCURRENCY &#8211; https:\/\/blog.yoshuawuyts.com\/streams-concurrency\/<\/p>\n<p>2019-12-22 &#8211; thruster 0.8.0 &#8211; https:\/\/crates.io\/crates\/thruster\/0.8.0<\/p>\n<p>2019-12-22 &#8211; tokio\u3067\u5916\u90e8\u30b3\u30de\u30f3\u30c9\u5b9f\u884c &#8211; https:\/\/qiita.com\/Kumassy\/items\/3fb3e52729e375efd5ed<\/p>\n<p>2019-12-23 &#8211; Async Interview #3: Carl Lerche &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2019\/12\/23\/async-interview-3-carl-lerche\/<\/p>\n<p>2019-12-24 &#8211; Async Exceptions in Haskell, and Rust &#8211; https:\/\/tech.fpcomplete.com\/blog\/async-exceptions-haskell-rust<\/p>\n<p>2019-12-25 &#8211; Actix web 2.0.0 is released &#8211; https:\/\/mobile.twitter.com\/fafhrd91\/status\/1209878253802004480<\/p>\n<p>2019-12-25 &#8211; async\/await \u6642\u4ee3\u306e\u65b0\u3057\u3044 HTTP \u30b5\u30fc\u30d0\u30fc\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af tide \u3092\u8a66\u3059 &#8211; https:\/\/yuk1tyd.hatenablog.com\/entry\/2019\/12\/25\/000100<\/p>\n<p>2019-12-26 &#8211; You can try this branch async-await &#8211; https:\/\/github.com\/awslabs\/aws-lambda-rust-runtime\/issues\/14#issuecomment-569046122<\/p>\n<p>2019-12-27 &#8211; Preventing the Collapse of Civilization &#8211; https:\/\/brandur.org\/nanoglyphs\/007-civilization<\/p>\n<p>2019-12-27 &#8211; Sessions &#8211; https:\/\/github.com\/seanmonstar\/warp\/issues\/342#issuecomment-569213444<\/p>\n<p>2019-12-28 &#8211; Announcing SQLx, a fully asynchronous pure Rust client library for Postgres and MySQL\/MariaDB with compile-time checked queries &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/egpw7g\/announcing_sqlx_a_fully_asynchronous_pure_rust\/ &#8211; https:\/\/github.com\/launchbadge\/sqlx<\/p>\n<p>2019-12-28 &#8211; Rust + GraphQL + Juniper + Diesel + Postgres + Actix &#8211; https:\/\/github.com\/lucperkins\/rust-graphql-juniper-actix-diesel-postgres<\/p>\n<p>2019-12-30 &#8211; reqwest v0.10 &#8211; https:\/\/seanmonstar.com\/post\/189960517042\/reqwest-v010<\/p>\n<p>2019-12-30 &#8211; Deno, first approach &#8211; https:\/\/dev.to\/lsagetlethias\/deno-first-approach-4d0<\/p>\n<p>2019-12-31 &#8211; Understanding Tokio, pt. 1 &#8211; https:\/\/blog.troutwine.us\/2019\/12\/31\/understanding-tokio-pt1\/<\/p>\n<h2>2019-11<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2019-11-01 &#8211; tide 0.3.0 &#8211; https:\/\/github.com\/http-rs\/tide\/releases\/tag\/0.3.0<\/ul>\n<\/li>\n<\/ul>\n<p>2019-11-03 &#8211; Experimental cooperative cancellation for async-std &#8211; https:\/\/github.com\/async-rs\/stop-token<\/p>\n<p>2019-11-04 &#8211; Blocking inside async code &#8211; https:\/\/stjepang.github.io\/2019\/12\/04\/blocking-inside-async-code.html<\/p>\n<p>2019-11-04 &#8211; Announcing genawaiter \u2013 use generators (yield) on stable Rust &#8211; https:\/\/users.rust-lang.org\/t\/announcing-genawaiter-use-generators-yield-on-stable-rust\/34283 &#8211; https:\/\/github.com\/whatisaphone\/genawaiter<\/p>\n<p>2019-11-05 &#8211; Rust 2020 &#8211; https:\/\/www.ncameron.org\/blog\/rust-2020\/<\/p>\n<p>2019-11-07 &#8211; Async-await on stable Rust! &#8211; https:\/\/blog.rust-lang.org\/2019\/11\/7\/Async-await-stable.html<\/p>\n<p>2019-11-07 &#8211; Announcing Rust 1.39.0 &#8211; https:\/\/blog.rust-lang.org\/2019\/11\/7\/Rust-1.39.0.html<\/p>\n<p>2019-11-07 &#8211; Proposing new AsyncRead \/ AsyncWrite traits &#8211; https:\/\/github.com\/tokio-rs\/tokio\/pull\/1744<\/p>\n<p>2019-11-08 &#8211; Rust 1.39\u3092\u65e9\u3081\u306b\u6df1\u6398\u308a &#8211; https:\/\/tech-blog.optim.co.jp\/entry\/2019\/11\/08\/080000<\/p>\n<p>2019-11-08 &#8211; Rust\u306e\u975e\u540c\u671f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u30de\u30b9\u30bf\u30fc\u3059\u308b &#8211; https:\/\/tech-blog.optim.co.jp\/entry\/2019\/11\/08\/163000<\/p>\n<p>2019-11-07 &#8211; async-std 0.99.12: async\/.await is ready! &#8211; https:\/\/async.rs\/blog\/async-std-0-9-12-async-await-is-ready\/<\/p>\n<p>2019-11-07 &#8211; futures-rs 0.3.0 &#8211; https:\/\/github.com\/rust-lang\/futures-rs\/releases\/tag\/0.3.0<\/p>\n<p>2019-11-07 &#8211; Using Rust in Windows &#8211; https:\/\/msrc-blog.microsoft.com\/2019\/11\/07\/using-rust-in-windows\/<\/p>\n<p>2019-11-08 &#8211; surf 1.0.3 &#8211; https:\/\/github.com\/http-rs\/surf\/releases\/tag\/1.0.3<\/p>\n<p>2019-11-08 &#8211; https:\/\/mobile.twitter.com\/yoshuawuyts\/status\/1192516304827228162<\/p>\n<p>2019-11-10 &#8211; hyper v0.13 &#8211; https:\/\/seanmonstar.com\/post\/189594157852\/hyper-v013<\/p>\n<p>2019-11-11 &#8211; Announcing async-std 1.0 &#8211; https:\/\/async.rs\/blog\/announcing-async-std-1-0\/ &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/duvdzz\/announcing_asyncstd_10\/<\/p>\n<p>2019-11-11 &#8211; Demystifying Asynchronous Rust &#8211; https:\/\/github.com\/teh-cmc\/rust-async &#8211; https:\/\/teh-cmc.github.io\/rust-async\/html\/<\/p>\n<p>2019-11-12 &#8211; async-std v1.0.0 &#8211; https:\/\/github.com\/async-rs\/async-std\/releases\/tag\/v1.0.0<\/p>\n<p>2019-11-12 &#8211; Rust and 2020 &#8211; https:\/\/vorner.github.io\/2019\/11\/12\/rust-2020.html<\/p>\n<p>2019-11-12 &#8211; demo for rust asynchronous io: from mio to stackless coroutine &#8211; https:\/\/github.com\/Hexilee\/async-io-demo<\/p>\n<p>2019-11-13 &#8211; ERROR HANDLING SURVEY &#8211; https:\/\/blog.yoshuawuyts.com\/error-handling-survey\/<\/p>\n<p>2019-11-14 &#8211; Thoughts on Error Handling in Rust &#8211; https:\/\/lukaskalbertodt.github.io\/2019\/11\/14\/thoughts-on-error-handling-in-rust.html<\/p>\n<p>2019-11-14 &#8211; Global Executors &#8211; https:\/\/boats.gitlab.io\/blog\/post\/global-executors\/<\/p>\n<p>2019-11-14 &#8211; https:\/\/mobile.twitter.com\/qnighy\/status\/1194764795074887680<\/p>\n<p>2019-11-15 &#8211; Global Executors &#8211; https:\/\/internals.rust-lang.org\/t\/global-executors\/11295<\/p>\n<p>2019-11-15 &#8211; Consider matching std::process behavior &#8211; https:\/\/github.com\/tokio-rs\/tokio\/issues\/1771<\/p>\n<p>2019-11-16 &#8211; async-stream v0.2.0 &#8211; https:\/\/github.com\/tokio-rs\/async-stream\/releases\/tag\/v0.2.0<\/p>\n<p>2019-11-21 &#8211; Await Trust-DNS no longer &#8211; https:\/\/bluejekyll.github.io\/blog\/rust\/2019\/12\/21\/await-trust-dns.html<\/p>\n<p>2019-11-22 &#8211; async-std v1.1.0 &#8211; https:\/\/github.com\/async-rs\/async-std\/releases\/tag\/v1.1.0<\/p>\n<p>2019-11-22 &#8211; https:\/\/mobile.twitter.com\/ubnt_intrepid\/status\/1197773414271873024<\/p>\n<p>2019-11-22 &#8211; Announcing the Async Interviews &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2019\/11\/22\/announcing-the-async-interviews\/<\/p>\n<p>2019-11-23 &#8211; Async, Awaited &#8211; https:\/\/brandur.org\/nanoglyphs\/004-async-awaited<\/p>\n<p>2019-11-24 &#8211; Cleanup support in Signal Hook &#8211; https:\/\/vorner.github.io\/2019\/11\/24\/signal-hook-cleanup.html<\/p>\n<p>2019-11-26 &#8211; Is this compatible with async-std? &#8211; https:\/\/github.com\/seanmonstar\/reqwest\/issues\/719<\/p>\n<p>2019-11-26 &#8211; Announcing Tokio 0.2 and a Roadmap to 1.0 &#8211; https:\/\/tokio.rs\/blog\/2019-11-tokio-0-2\/<\/p>\n<p>2019-11-27 &#8211; tokio-rustls 0.12.0 &#8211; https:\/\/crates.io\/crates\/tokio-rustls\/0.12.0<\/p>\n<p>2019-11-27 &#8211; \u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u306eRust\u30b3\u30fc\u30c9\u3092 async \/ await \u306b\u79fb\u884c\u3057\u305f\u8a71 &#8211; https:\/\/blog.idein.jp\/post\/189326134515\/rust-async-await<\/p>\n<p>2019-11-27 &#8211; TIDE &#8211; https:\/\/blog.yoshuawuyts.com\/tide\/<\/p>\n<p>2019-11-27 &#8211; tokio 0.2.0 &#8211; https:\/\/github.com\/tokio-rs\/tokio\/releases\/tag\/tokio-0.2.0<\/p>\n<p>2019-11-28 &#8211; tide 0.3.0 &#8211; https:\/\/github.com\/http-rs\/tide\/releases\/tag\/0.3.0<\/p>\n<p>2019-11-28 &#8211; Async Interview #1: Alex and Nick talk about async I\/O and WebAssembly &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2019\/11\/28\/async-interview-1-alex-and-nick-talk-about-async-i-o-and-webassembly\/<\/p>\n<p>2019-11-28 &#8211; async-std v1.2.0 &#8211; https:\/\/github.com\/async-rs\/async-std\/releases\/tag\/v1.2.0<\/p>\n<p>2019-11-29 &#8211; join! &#8211; Rust macros with combinators to join everything &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/e3evz1\/join_rust_macros_with_combinators_to_join\/<\/p>\n<p>2019-11-30 &#8211; Async Interviews &#8211; https:\/\/users.rust-lang.org\/t\/async-interviews\/35167<\/p>\n<h2>2019-10<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2019-10-01 &#8211; tokio 0.2.0-alpha.6 &#8211; https:\/\/crates.io\/crates\/tokio\/0.2.0-alpha.6<\/ul>\n<\/li>\n<\/ul>\n<p>2019-10-02 &#8211; Tonic: gRPC has come to async\/await! &#8211; https:\/\/luciofran.co\/tonic-grpc-has-come-to-async-await\/<\/p>\n<p>2019-10-04 &#8211; Actix server v0.7.0 &#8211; https:\/\/github.com\/actix\/actix-net\/releases\/tag\/server-v0.7.0<\/p>\n<p>2019-10-07 &#8211; Async Foundations Update: Time for polish! &#8211; https:\/\/blog.rust-lang.org\/inside-rust\/2019\/10\/7\/AsyncAwait-WG-Focus-Issues.html<\/p>\n<p>2019-10-07 &#8211; Will it be possible to use async-await in a tower service?- https:\/\/github.com\/tower-rs\/tower\/issues\/358<\/p>\n<p>2019-10-08 &#8211; reqwest alpha.await &#8211; https:\/\/seanmonstar.com\/post\/188220739932\/reqwest-alphaawait<\/p>\n<p>2019-10-09 &#8211; The Node Experiment &#8211; Exploring Async Basics with Rust &#8211; https:\/\/cfsamson.github.io\/book-exploring-async-basics\/<\/p>\n<p>2019-10-10 &#8211; futures-timer 1.0.0 &#8211; https:\/\/github.com\/async-rs\/futures-timer\/releases\/tag\/1.0.0<\/p>\n<p>2019-10-11 &#8211; Improving async-await&#8217;s &#8220;Future is not Send&#8221; diagnostic &#8211; https:\/\/blog.rust-lang.org\/inside-rust\/2019\/10\/11\/AsyncAwait-Not-Send-Error-Improvements.html<\/p>\n<p>2019-10-13 &#8211; Making the Tokio scheduler 10x faster &#8211; https:\/\/tokio.rs\/blog\/2019-10-scheduler\/<\/p>\n<p>2019-10-14 &#8211; Opensource and ownership transfer &#8211; https:\/\/github.com\/AtherEnergy\/rumqtt\/issues\/179<\/p>\n<p>2019-10-16 &#8211; Asynchronous Destructors &#8211; https:\/\/boats.gitlab.io\/blog\/post\/poll-drop\/<\/p>\n<p>2019-10-16 &#8211; Rust&#8217;s Journey to Async\/await &#8211; https:\/\/www.infoq.com\/presentations\/rust-2019\/<\/p>\n<p>2019-10-26 &#8211; Making an opinionated Web framework &#8211; https:\/\/speakerdeck.com\/qnighy\/making-an-opinionated-web-framework<\/p>\n<p>2019-10-26 &#8211; why async fn in traits are hard &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2019\/10\/26\/async-fn-in-traits-are-hard\/<\/p>\n<p>2019-10-27 &#8211; tokio vs async-std ? &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/dngig6\/tokio_vs_asyncstd\/<\/p>\n<p>2019-10-27 &#8211; Trying to futures::executor::block_on(run_server()) gives runtime error &#8211; https:\/\/github.com\/hyperium\/hyper\/issues\/1995#issuecomment-554997179<\/p>\n<p>2019-10-30 &#8211; The Rustasync working group has sunset Runtime is no longer active &#8211; https:\/\/github.com\/rustasync\/team<\/p>\n<p>2019-10-31 &#8211; Can anyone give me a high level summary of the difference between Tokio and Async-std, as well as how async works in rust? &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/dpjlkt\/can_anyone_give_me_a_high_level_summary_of_the\/f5wkmvn\/<\/p>\n<p>2019-10-30 &#8211; deprecate &#8211; https:\/\/github.com\/rustasync\/runtime\/pull\/121<\/p>\n<p>2019-10-31 &#8211; https:\/\/twitter.com\/Linda_pp\/status\/1189734163139555329<\/p>\n<h2>2019-09<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2019-09-02 &#8211; FUTURES CONCURRENCY &#8211; https:\/\/blog.yoshuawuyts.com\/futures-concurrency\/<\/ul>\n<\/li>\n<\/ul>\n<p>2019-09-02 &#8211; How Rust optimizes async\/await II: Program analysis &#8211; https:\/\/tmandry.gitlab.io\/blog\/posts\/optimizing-await-2\/<\/p>\n<p>2019-09-03 &#8211; Rust\u3067Runtime\u3092\u4f7f\u7528\u3057\u3066main\u3092async\u306b\u3059\u308b &#8211; https:\/\/sioyaki.com\/entry\/2019\/09\/03\/152447<\/p>\n<p>2019-09-04 &#8211; Pinning and Service &#8211; https:\/\/github.com\/tower-rs\/tower\/issues\/319<\/p>\n<p>2019-09-04 &#8211; hyper alpha supports async\/await &#8211; https:\/\/seanmonstar.com\/post\/187493499882\/hyper-alpha-supports-asyncawait<\/p>\n<p>2019-09-12 &#8211; async-stream v0.1.1 &#8211; https:\/\/github.com\/tokio-rs\/async-stream\/releases\/tag\/v0.1.1<\/p>\n<p>2019-09-13 &#8211; tokio-0.2.0-alpha4AsyncReadandAsyncWritetraits are not the same asfutures-0.3.0-alpha18` versions &#8211; https:\/\/github.com\/tokio-rs\/tokio\/issues\/1551<\/p>\n<p>2019-09-14 &#8211; Tracking issue for std::future migration &#8211; https:\/\/github.com\/actix\/actix-net\/issues\/45<\/p>\n<p>2019-09-14 &#8211; The Why, What, and How of Pinning in Rust &#8211; https:\/\/www.youtube.com\/watch?v=DkMwYxfSYNQ&amp;feature=youtu.be<\/p>\n<p>2019-09-15 &#8211; Playing with the new async &#8211; https:\/\/vorner.github.io\/2019\/09\/15\/play-with-new-async.html<\/p>\n<p>2019-09-18 &#8211; mio-timerfd 0.1.0 &#8211; https:\/\/github.com\/oefd\/mio-timerfd &#8211; https:\/\/crates.io\/crates\/mio-timerfd\/0.1.0<\/p>\n<p>2019-09-19 &#8211; Tide&#8217;s Future Direction &#8211; https:\/\/github.com\/http-rs\/tide\/issues\/325<\/p>\n<p>2019-09-19 &#8211; Using async-std (was reqwest) &#8211; https:\/\/users.rust-lang.org\/t\/using-async-std-was-reqwest\/32735<\/p>\n<p>2019-09-20 &#8211; Will crates like tokio, mio and futures be still needed after async\/await gets stabilized? &#8211; https:\/\/old.reddit.com\/r\/rust\/comments\/d6pw43\/will_crates_like_tokio_mio_and_futures_be_still\/f0v27a4\/<\/p>\n<p>2019-09-20 &#8211; tokio 0.2.0-alpha.5 &#8211; https:\/\/github.com\/tokio-rs\/tokio\/releases\/tag\/tokio-0.2.0-alpha.5 &#8211; https:\/\/crates.io\/crates\/tokio\/0.2.0-alpha.5<\/p>\n<p>2019-09-20 &#8211; https:\/\/mobile.twitter.com\/qnighy\/status\/1175057815313907712<\/p>\n<p>2019-09-21 &#8211; ASYNC BUILDERS &#8211; https:\/\/blog.yoshuawuyts.com\/async-finalizers\/<\/p>\n<p>2019-09-22 &#8211; https:\/\/mobile.twitter.com\/qnighy\/status\/1175699769865359362<\/p>\n<p>2019-09-22 &#8211; https:\/\/mobile.twitter.com\/qnighy\/status\/1175678940926464000<\/p>\n<p>2019-09-22 &#8211; https:\/\/mobile.twitter.com\/qnighy\/status\/1175709767685177345<\/p>\n<p>2019-09-24 &#8211; rumqtt v0.31.0 &#8211; https:\/\/github.com\/AtherEnergy\/rumqtt\/releases\/tag\/v0.31.0<\/p>\n<p>2019-09-27 &#8211; WASM Support &#8211; https:\/\/github.com\/seanmonstar\/reqwest\/pull\/630<\/p>\n<p>2019-09-26 &#8211; Async Ecosystem Working Group Meeting #30 &#8211; https:\/\/github.com\/rustasync\/team\/issues\/143<\/p>\n<p>2019-09-27 &#8211; futures-preview 0.3.0-alpha.19 &#8211; https:\/\/crates.io\/crates\/futures-preview\/0.3.0-alpha.19<\/p>\n<p>2019-09-29 &#8211; Fighting the Async fragmentation &#8211; https:\/\/vorner.github.io\/2019\/09\/29\/figthting-the-async-fragmentation.html<\/p>\n<p>async \u30e9\u30f3\u30bf\u30a4\u30e0\u306e\u65ad\u7247\u5316\u3092\u5fc3\u914d\u3059\u308b\u8a71<\/p>\n<p>2019-09-30 &#8211; Async-await hits beta! &#8211; https:\/\/blog.rust-lang.org\/2019\/09\/30\/Async-await-hits-beta.html<\/p>\n<p>Async Ecosystem WG \u304c\u5ec3\u6b62<br \/>\nAsync Foundations WG \u306f async-book \u306e\u6574\u5099\u306b<\/p>\n<h2>2019-08<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2019-08-02 &#8211; Zero-Cost Asynchronous Programming in Rust &#8211; https:\/\/blog.knoldus.com\/zero-cost-asynchronous-programming-in-rust\/<\/ul>\n<\/li>\n<\/ul>\n<p>2019-08-03 &#8211; Rust\u306easync\/await\u3092\u30b9\u30e0\u30fc\u30ba\u306b\u4f7f\u3046\u305f\u3081\u306e\u30c6\u30af\u30cb\u30c3\u30af &#8211; https:\/\/qiita.com\/qnighy\/items\/59133e69a0ba0c6a7fef<\/p>\n<p>2019-08-06 &#8211; Async I\/O TransactionGuard &#8211; https:\/\/github.com\/diesel-rs\/diesel\/issues\/399#issuecomment-518422793<\/p>\n<p>2019-08-08 &#8211; Swagger\/OpenAPI Spec generation &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/cn9wrc\/swaggeropenapi_spec_generation\/<\/p>\n<p>2019-08-08 &#8211; Tokio alpha release with async &amp; await &#8211; https:\/\/tokio.rs\/blog\/2019-08-alphas\/<\/p>\n<p>2019-08-09 &#8211; tokio 0.2.0-alpha.1 &#8211; https:\/\/crates.io\/crates\/tokio\/0.2.0-alpha.1<\/p>\n<p>2019-08-09 &#8211; dtolnay::01_await_a_minute &#8211; https:\/\/docs.rs\/dtolnay\/0.0.3\/dtolnay\/macro_01__await_a_minute.html<\/p>\n<p>2019-08-11 &#8211; Runtime configuration reloading &#8211; https:\/\/vorner.github.io\/2019\/08\/11\/runtime-configuration-reloading.html<\/p>\n<p>2019-08-16 &#8211; Announcing async-std &#8211; https:\/\/async.rs\/blog\/announcing-async-std\/ &#8211; https:\/\/news.ycombinator.com\/item?id=20719095<\/p>\n<p>2019-08-16 &#8211; https:\/\/mobile.twitter.com\/asyncrs\/status\/1162393724745322496<\/p>\n<p>2019-08-17 &#8211; Compatibility with tokio? &#8211; https:\/\/github.com\/async-rs\/async-std\/issues\/54<\/p>\n<p>2019-08-17 &#8211; https:\/\/mobile.twitter.com\/yoshuawuyts\/status\/1162492948430413824<\/p>\n<p>2019-08-17 &#8211; https:\/\/mobile.twitter.com\/Argorak\/status\/1162514356560699396<\/p>\n<p>2019-08-18 &#8211; How Rust optimizes async\/await I &#8211; https:\/\/tmandry.gitlab.io\/blog\/posts\/optimizing-await-1\/<\/p>\n<p>2019-08-20 &#8211; futures-preview &#8211; 0.3.0-alpha.18 &#8211; https:\/\/crates.io\/crates\/futures-preview\/0.3.0-alpha.18<\/p>\n<p>2019-08-21 &#8211; https:\/\/mobile.twitter.com\/yaahc_\/status\/1164176227722121216<\/p>\n<p>2019-08-11 &#8211; async-log &#8211; 2.0.0 &#8211; https:\/\/github.com\/async-rs\/async-log\/releases\/tag\/2.0.0<\/p>\n<p>2019-08-12 &#8211; actix-web\u306e\u67d4\u8edf\u306a\u30ea\u30af\u30a8\u30b9\u30c8\u30cf\u30f3\u30c9\u30e9\u306e\u4ed5\u7d44\u307f &#8211; http:\/\/blog.endflow.net\/flex-handler\/<\/p>\n<p>2019-08-13 &#8211; Rust 1.38 is scheduled to branch off today, but this PR didn&#8217;t land yet and there are a bunch of blockers still open. &#8211; https:\/\/github.com\/rust-lang\/rust\/pull\/63209#issuecomment-520741844<\/p>\n<p>2019-08-14 &#8211; SURF &#8211; https:\/\/blog.yoshuawuyts.com\/surf\/<\/p>\n<p>2019-08-14 &#8211; Diagnostics with Tracing &#8211; https:\/\/tokio.rs\/blog\/2019-08-tracing\/<\/p>\n<p>2019-08-14 &#8211; AWS\u2019 sponsorship of the Rust project &#8211; https:\/\/aws.amazon.com\/jp\/blogs\/opensource\/aws-sponsorship-of-the-rust-project\/<\/p>\n<p>2019-08-14 &#8211; Should the standard library have a basic Future runtime? &#8211; https:\/\/internals.rust-lang.org\/t\/should-the-standard-library-have-a-basic-future-runtime\/10705\/11<\/p>\n<p>2019-08-15 &#8211; Announcing Rust 1.37.0 &#8211; https:\/\/blog.rust-lang.org\/2019\/8\/15\/Rust-1.37.0.html<\/p>\n<p>2019-08-15 &#8211; async generator changes &#8211; https:\/\/github.com\/Nemo157\/embrio-rs\/pull\/23<\/p>\n<p>2019-08-15 &#8211; Understanding Futures in Rust &#8212; Part 2 &#8211; https:\/\/www.viget.com\/articles\/understanding-futures-is-rust-part-2\/-<\/p>\n<p>2019-08-17 &#8211; async-std v0.99.0 &#8211; https:\/\/github.com\/async-rs\/async-std\/releases\/tag\/v0.99.0<\/p>\n<p>2019-08-17 &#8211; Announcing async-std beta: an async port of the Rust standard library &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/cr85pp\/announcing_asyncstd_beta_an_async_port_of_the\/<\/p>\n<p>2019-08-17 &#8211; fred.rs 1.1.1 &#8211; https:\/\/github.com\/azuqua\/fred.rs\/releases\/tag\/1.1.1<\/p>\n<p>2019-08-18 &#8211; tokio 0.2.0-alpha.2 &#8211; https:\/\/crates.io\/crates\/tokio\/0.2.0-alpha.2<\/p>\n<p>2019-08-21 &#8211; Remove async_await feature &#8211; https:\/\/github.com\/rust-lang\/async-book\/pull\/33<\/p>\n<p>2019-08-23 &#8211; runtime-native 0.3.0-alpha.6 &#8211; https:\/\/crates.io\/crates\/runtime-native\/0.3.0-alpha.6<\/p>\n<p>2019-08-24 &#8211; replace redis-async with redis crate &#8211; https:\/\/github.com\/actix\/actix-redis\/pull\/30<\/p>\n<p>2019-08-25 &#8211; Poll: Async\/Await, let\u2019s talk about executors! &#8211; https:\/\/users.rust-lang.org\/t\/poll-async-await-lets-talk-about-executors\/31753<\/p>\n<p>2019-08-27 &#8211; Async Stack Traces in Rust &#8211; https:\/\/fitzgeraldnick.com\/2019\/08\/27\/async-stacks-in-rust.html<\/p>\n<p>2019-08-28 &#8211; Running RusotoFuture on tokio:0.2.0-alpha.2 &#8211; https:\/\/github.com\/rusoto\/rusoto\/issues\/1493<\/p>\n<p>2019-08-28 &#8211; rust \u304b\u3089 redis \u3092\u975e\u540c\u671f\u3067\u4f7f\u3046 2019\u590f &#8211; https:\/\/qiita.com\/hadashiA\/items\/22f331c8b407011fa7fa<\/p>\n<p>2019-08-29 &#8211; surf 1.0.1 &#8211; https:\/\/github.com\/http-rs\/surf\/releases\/tag\/1.0.1<\/p>\n<p>2019-08-29 &#8211; tokio 0.2.0-alpha.3 &#8211; https:\/\/crates.io\/crates\/tokio\/0.2.0-alpha.3<\/p>\n<p>2019-08-30 &#8211; tokio 0.2.0-alpha.4 &#8211; https:\/\/crates.io\/crates\/tokio\/0.2.0-alpha.4<\/p>\n<p>2019-08-30 &#8211; Async ecosystems newsletter\/blog post #1 &#8211; https:\/\/github.com\/rustasync\/team\/issues\/142<\/p>\n<h2>2019-07<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2019-07-04 &#8211; tokio &#8211; 0.1.22 &#8211; https:\/\/crates.io\/crates\/tokio\/0.1.22<\/ul>\n<\/li>\n<\/ul>\n<p>2019-07-04 &#8211; futures-preview 0.3.0-alpha.17 &#8211; https:\/\/crates.io\/crates\/futures-preview\/0.3.0-alpha.17<\/p>\n<p>2019-07-04 &#8211; Announcing Rust 1.36.0 &#8211; https:\/\/blog.rust-lang.org\/2019\/7\/4\/Rust-1.36.0.html<\/p>\n<p>core::future \u304c stable \u306b\u5165\u3063\u305f<\/p>\n<p>2019-07-05 &#8211; Rust\u306e\u672a\u6765\u3044\u308f\u3086\u308bFuture &#8211; https:\/\/tech-blog.optim.co.jp\/entry\/2019\/07\/05\/173000<\/p>\n<p>2019-07-05 &#8211; Update to std::future::Future futures\/0.3 &#8211; https:\/\/github.com\/actix\/actix-web\/issues\/955<\/p>\n<p>2019-07-06 &#8211; Rust\u306easync\/await\u306e\u7279\u5fb44\u3064 &#8211; https:\/\/qiita.com\/qnighy\/items\/05c38f73ef4b9e487ced<\/p>\n<p>2019-07-07 &#8211; Rust\u306eFuture\u3068\u305d\u306eRunner\u3092\u4f5c\u3063\u3066\u307f\u305f &#8211; https:\/\/keens.github.io\/blog\/2019\/07\/07\/rustnofuturetosonorunnerwotsukuttemita\/<\/p>\n<p>2019-07-08 &#8211; Async-await status report #2 &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2019\/07\/08\/async-await-status-report-2\/<\/p>\n<p>2019-07-09 &#8211; Migrating a crate from futures 0.1 to 0.3 &#8211; https:\/\/www.ncameron.org\/blog\/migrating-a-crate-from-futures-0-1-to-0-3\/<\/p>\n<p>2019-07-17 &#8211; Notes on a smaller Rust &#8211; https:\/\/boats.gitlab.io\/blog\/post\/notes-on-a-smaller-rust\/<\/p>\n<p>2019-07-19 &#8211; Determine the future of tower-web -https:\/\/github.com\/carllerche\/tower-web\/issues\/218<\/p>\n<p>2019-07-27 &#8211; openapi-generator\u3067\u751f\u6210\u3055\u308c\u305frust\u306e\u30b3\u30fc\u30c9\u3067\u30a8\u30e9\u30fc\u304c\u3067\u308b\u3002 &#8211; https:\/\/ja.stackoverflow.com\/questions\/56943\/openapi-generator%E3%81%A7%E7%94%9F%E6%88%90%E3%81%95%E3%82%8C%E3%81%9Frust%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E3%81%A7%E3%82%8B<\/p>\n<p>2019-07-31 &#8211; Paperclip 0.3.0 released! &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/cjw534\/paperclip_030_released\/<\/p>\n<h2>2019-06<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2019-06-04 &#8211; Removing libpq (to enable async) &#8211; https:\/\/github.com\/diesel-rs\/diesel\/issues\/2084<\/ul>\n<\/li>\n<\/ul>\n<p>2019-06-05 &#8211; actix-web 1.0.0 &#8211; https:\/\/github.com\/actix\/actix-web\/releases\/tag\/web-v1.0.0<\/p>\n<p>2019-06-05 &#8211; Actix-web 1.0 released &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/bwy99w\/actixweb_10_released\/<\/p>\n<p>2019-06-12 &#8211; \u300cRust\u3067\u59cb\u3081\u308b\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u300d\u3092\u51fa\u7248\u3057\u307e\u3057\u305f\u3002 &#8211; https:\/\/cha-shu00.hatenablog.com\/entry\/2019\/06\/12\/231526<\/p>\n<p>2019-06-13 &#8211; Green Threads Explained in 200 Lines of Rust &#8211; https:\/\/cfsamson.gitbook.io\/green-threads-explained-in-200-lines-of-rust\/<\/p>\n<p>2019-06-14 &#8211; AWS Kinesis \u3072\u305f\u3059\u3089\u8aad\u307f\u306b\u3044\u304f k-iter \u306e\u8907\u6570 shard \u5bfe\u5fdc(\u3068\u3001Rust \u306e Future\/Stream\/Tokio \u8a71) &#8211; https:\/\/rohki.hatenablog.com\/entry\/2019\/06\/24\/210938<\/p>\n<p>2019-06-17 &#8211; runtime-native 0.3.0-alpha.4 &#8211; https:\/\/crates.io\/crates\/runtime-native\/0.3.0-alpha.4<\/p>\n<p>2019-06-18 &#8211; Rust Creator Graydon Hoare Talks About Security, History, and Rust &#8211; https:\/\/thenewstack.io\/rust-creator-graydon-hoare-talks-about-security-history-and-rust\/<\/p>\n<p>2019-06-19 &#8211; How Rust Views Tradeoffs &#8211; https:\/\/www.infoq.com\/presentations\/rust-tradeoffs\/<\/p>\n<p>2019-06-20 &#8211; Distributed Systems Training in Go and Rust &#8211; https:\/\/pingcap.com\/blog\/distributed-systems-training-in-go-and-rust\/<\/p>\n<p>2019-06-20 &#8211; RUST STREAMS &#8211; https:\/\/blog.yoshuawuyts.com\/rust-streams\/<\/p>\n<p>2019-06-20 &#8211; tokio::spawn failed (is a tokio runtime running this future?) &#8211; https:\/\/github.com\/http-rs\/tide\/issues\/280<\/p>\n<p>2019-06-24 &#8211; Survivor skills &#8211; https:\/\/aturon.github.io\/personal\/2019\/06\/24\/survivor-skills\/<\/p>\n<p>2019-06-25 &#8211; Back in the saddle &#8211; https:\/\/aturon.github.io\/tech\/2019\/06\/25\/back-in-the-saddle\/<\/p>\n<p>2019-06-27 &#8211; runtime-native 0.3.0-alpha.5 &#8211; https:\/\/crates.io\/crates\/runtime-native\/0.3.0-alpha.5<\/p>\n<p>2019-06-27 &#8211; futures-rs &#8211; 0.1.28 &#8211; https:\/\/github.com\/rust-lang\/futures-rs\/releases\/tag\/0.1.28<\/p>\n<p>2019-06-29 &#8211; ASYNC LOG &#8211; https:\/\/blog.yoshuawuyts.com\/async-log\/ &#8211; https:\/\/mobile.twitter.com\/yoshuawuyts\/status\/1144750481631301632<\/p>\n<p>2019-06-29 &#8211; Lambda with Async\/Await &#8211; https:\/\/github.com\/awslabs\/aws-lambda-rust-runtime\/pull\/111<\/p>\n<h2>2019-05<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2019-05-06 &#8211; A final proposal for await syntax &#8211; https:\/\/boats.gitlab.io\/blog\/post\/await-decision\/<\/ul>\n<\/li>\n<\/ul>\n<p>2019-05-06 &#8211; redisconf19 &#8211; Writing Redis Modules In Rust &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/bl0vew\/redisconf19_writing_redis_modules_in_rust\/<\/p>\n<p>2019-05-09 &#8211; tokio console &#8211; https:\/\/github.com\/tokio-rs\/console<\/p>\n<p>2019-05-10 &#8211; async support &#8211; https:\/\/github.com\/awslabs\/aws-lambda-rust-runtime\/pull\/106<\/p>\n<p>2019-05-11 &#8211; futures-preview 0.3.0-alpha.16 &#8211; https:\/\/crates.io\/crates\/futures-preview\/0.3.0-alpha.16<\/p>\n<p>2019-05-12 &#8211; Rewrite async\/await in their entirety &#8211; https:\/\/github.com\/Nemo157\/embrio-rs\/pull\/13<\/p>\n<p>2019-05-13 &#8211; runtime-native 0.3.0-alpha.3 &#8211; https:\/\/crates.io\/crates\/runtime-native\/0.3.0-alpha.3<\/p>\n<p>2019-05-15 &#8211; 4 years of Rust &#8211; https:\/\/blog.rust-lang.org\/2019\/5\/15\/4-Years-Of-Rust.html<\/p>\n<p>2019-05-16 &#8211; Zero Cost Abstractions &#8211; https:\/\/boats.gitlab.io\/blog\/post\/zero-cost-abstractions\/<\/p>\n<p>2019-05-18 &#8211; https:\/\/mobile.twitter.com\/yutakashino\/status\/1129529590697717760<\/p>\n<p>2019-05-23 &#8211; Announcing Rust 1.35.0 &#8211; https:\/\/blog.rust-lang.org\/2019\/5\/23\/Rust-1.35.0.html<\/p>\n<p>dbg! \u30de\u30af\u30ed<\/p>\n<p>2019-05-27 &#8211; Can we reduce the burden of cancel-correctness for async Futures? &#8211; https:\/\/internals.rust-lang.org\/t\/can-we-reduce-the-burden-of-cancel-correctness-for-async-futures\/10278<\/p>\n<p>2019-05-28 &#8211; Async\/Await &#8211; The challenges besides syntax &#8211; Cancellation &#8211; https:\/\/gist.github.com\/Matthias247\/ffc0f189742abf6aa41a226fe07398a8<\/p>\n<p>2019-05-28 &#8211; Update on await syntax &#8211; https:\/\/boats.gitlab.io\/blog\/post\/await-decision-ii\/<\/p>\n<p>2019-05-31 &#8211; tokio 0.1.21 &#8211; https:\/\/crates.io\/crates\/tokio\/0.1.21<\/p>\n<h2>2019-04<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2019-04-02 &#8211; Explained: How does async work in Rust? &#8211; https:\/\/levelup.gitconnected.com\/explained-how-does-async-work-in-rust-c406f411b2e2 &#8211; https:\/\/dev.to\/gruberb\/explained-how-does-async-work-in-rust-46f8<\/ul>\n<\/li>\n<\/ul>\n<p>2019-04-11 &#8211; thruster 0.7.0 &#8211; https:\/\/crates.io\/crates\/thruster\/0.7.0<\/p>\n<p>2019-04-15 &#8211; for await loops (Part I) &#8211; https:\/\/boats.gitlab.io\/blog\/post\/for-await-i\/<\/p>\n<p>2019-04-16 &#8211; RUNTIME &#8211; https:\/\/blog.yoshuawuyts.com\/runtime\/<\/p>\n<p>Async Ecosystem WG \u306f std \u3068\u540c\u3058\u4f7f\u3044\u52dd\u624b\u306e async \u74b0\u5883\u306e\u305f\u3081\u306b runtime \u306e\u62bd\u8c61\u5316\u3092\u8a66\u307f\u3066\u3044\u305f<\/p>\n<p>2019-04-16 &#8211; futures-preview 0.3.0-alpha.14 &#8211; https:\/\/crates.io\/crates\/futures-preview\/0.3.0-alpha.14<\/p>\n<p>2019-04-17 &#8211; runtime-native 0.3.0-alpha.1 &#8211; https:\/\/crates.io\/crates\/runtime-native\/0.3.0-alpha.1<\/p>\n<p>2019-04-18 &#8211; Futures 0.1 Compatibility Layer &#8211; https:\/\/rust-lang.github.io\/futures-rs\/blog\/2019\/04\/18\/compatibility-layer.html<\/p>\n<p>2019-04-15 &#8211; tide 0.1.0 &#8211; https:\/\/github.com\/http-rs\/tide\/releases\/tag\/0.1.0<\/p>\n<p>2019-04-15 &#8211; Understanding Futures In Rust &#8212; Part 1 &#8211; https:\/\/www.viget.com\/articles\/understanding-futures-in-rust-part-1\/<\/p>\n<p>2019-04-17 &#8211; Announcing Runtime &#8211; https:\/\/internals.rust-lang.org\/t\/announcing-runtime\/9825<\/p>\n<p>2019-04-21 &#8211; The Nuclear Reactor Design Pattern &#8211; https:\/\/vorner.github.io\/2019\/04\/21\/nuclear-reactor-design-pattern.html<\/p>\n<p>2019-04-21 &#8211; async-timer 0.1.0 &#8211; https:\/\/github.com\/DoumanAsh\/async-timer &#8211; https:\/\/crates.io\/crates\/async-timer\/0.1.0<\/p>\n<p>2019-04-22 &#8211; RustLatam 2019 &#8211; Without Boats: Zero-Cost Async IO &#8211; https:\/\/www.youtube.com\/watch?v=skos4B5x7qE<\/p>\n<p>2019-04-23 &#8211; [tracking issue] timers &#8211; https:\/\/github.com\/rustasync\/runtime\/issues\/14<\/p>\n<p>2019-04-24 &#8211; RustLatam 2019 &#8211; Without Boats: Zero-Cost Async IO &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/bgikha\/rustlatam_2019_without_boats_zerocost_async_io\/<\/p>\n<p>2019-04-25 &#8211; Made timerfd implementation with romio &#8211; https:\/\/github.com\/rustasync\/team\/issues\/14#issuecomment-486279799<\/p>\n<p>2019-04-27 &#8211; tower 0.1.0 &#8211; https:\/\/github.com\/tower-rs\/tower\/releases\/tag\/tower-0.1.0<\/p>\n<p>2019-04-27 &#8211; 0.3.0-alpha.15 &#8211; https:\/\/crates.io\/crates\/futures-preview\/0.3.0-alpha.15<\/p>\n<p>2019-04-28 &#8211; async is not zero-cost &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/bi9yzs\/async_is_not_zerocost\/<\/p>\n<p>2019-04-29 &#8211; juliex 0.3.0-alpha.6 &#8211; https:\/\/github.com\/withoutboats\/juliex\/releases\/tag\/0.3.0-alpha.6<\/p>\n<p>2019-04-29 &#8211; runtime-native 0.3.0-alpha.2 &#8211; https:\/\/crates.io\/crates\/runtime-native\/0.3.0-alpha.2<\/p>\n<p>2019-04-29 &#8211; http-service 0.2.0 &#8211; https:\/\/github.com\/http-rs\/http-service\/releases\/tag\/http-service-0.2.0<\/p>\n<h2>2019-03<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2019-03-01 &#8211; Async-await status report &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2019\/03\/01\/async-await-status-report\/<\/ul>\n<\/li>\n<\/ul>\n<p>await \u8ad6\u4e89<\/p>\n<p>2019-03-05 &#8211; Actix web 0.7.19 &#8211; https:\/\/github.com\/actix\/actix-web\/releases\/tag\/v0.7.19<\/p>\n<p>2019-03-14 &#8211; Question: Is it possible to use warp on zeit or aws lambda &#8211; https:\/\/github.com\/seanmonstar\/warp\/issues\/190<\/p>\n<p>2019-03-15 &#8211; Switching to tower::Service &#8211; https:\/\/github.com\/hyperium\/hyper\/issues\/1782<\/p>\n<p>2019-03-19 &#8211; Async IO in Rust and Haskell &#8211; https:\/\/slides.com\/wraithm\/async-io-in-rust-and-haskell\/<\/p>\n<p>2019-03-19 &#8211; Explained: Futures in Rust for Web Development &#8211; https:\/\/dev.to\/gruberb\/explained-rust-futures-for-web-development-a10<\/p>\n<p>2019-03-25 &#8211; std::pin \u306e\u52d8\u6240 &#8211; https:\/\/www.slideshare.net\/HiroakiGoto\/stdpin<\/p>\n<h2>2019-02<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2019-02-04 &#8211; osaka.rs &#8211; https:\/\/aep.github.io\/rust-async-without-the-noise\/ &#8211; https:\/\/github.com\/aep\/osaka &#8211; https:\/\/news.ycombinator.com\/item?id=19104065<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2019-02-04 &#8211; Rust Governance: Scaling Empathy &#8211; https:\/\/manishearth.github.io\/blog\/2019\/02\/04\/rust-governance-scaling-empathy\/<\/ul>\n<\/li>\n<\/ul>\n<p>2019-02-09 &#8211; async\/await\u3068\u5408\u6210\u53ef\u80fd\u6027 &#8211; https:\/\/keens.github.io\/blog\/2019\/02\/09\/async_awaittogouseikanousei\/<\/p>\n<p>2019-02-10 &#8211; osaka.rs \u30e1\u30e2 &#8211; https:\/\/qiita.com\/maueki\/items\/c0bb363120e0f01d27ec<\/p>\n<p>2019-02-11 &#8211; Generators I: Toward a minimum viable product &#8211; https:\/\/boats.gitlab.io\/blog\/post\/generators-i\/<\/p>\n<p>2019-02-14 &#8211; futures-native-timers &#8211; https:\/\/github.com\/tinaun\/futures-native-timers<\/p>\n<p>2019-02-18 &#8211; Generators II: The Question Mark Problem &#8211; https:\/\/boats.gitlab.io\/blog\/post\/generators-ii\/<\/p>\n<p>2019-02-21 &#8211; futures-preview 0.3.0-alpha.13 &#8211; https:\/\/crates.io\/crates\/futures-preview\/0.3.0-alpha.13<\/p>\n<p>2019-02-22 &#8211; Rust lang team working groups &#8211; https:\/\/smallcultfollowing.com\/babysteps\/blog\/2019\/02\/22\/rust-lang-team-working-groups\/<\/p>\n<p>2019-02-22 &#8211; Toy Future combinators with async\/await syntax &#8211; https:\/\/www.reddit.com\/r\/rust\/comments\/at6gh7\/toy_future_combinators_with_asyncawait_syntax\/<\/p>\n<p>2019-02-27 &#8211; ASYNC ECOSYSTEM WG &#8211; https:\/\/blog.yoshuawuyts.com\/async-ecosystem-wg\/<\/p>\n<p>Async Ecosystem WG (rustasync) \u306f tide, romio, juliex \u3092\u958b\u767a<\/p>\n<h2>2019-01<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2019-01-07 &#8211; The Waker API I: what does a waker do? &#8211; https:\/\/boats.gitlab.io\/blog\/post\/wakers-i\/<\/ul>\n<\/li>\n<\/ul>\n<p>2019-01-10 &#8211; HTTP Client Trait &#8211; https:\/\/github.com\/hyperium\/http\/issues\/288<\/p>\n<p>carllerche \u306f tower \u304c http server\/cliernt \u62bd\u8c61\u5316\u5c64\u306b\u306a\u308b\u306f\u305a\u3068\u306e\u3053\u3068<\/p>\n<p>2019-01-11 &#8211; The Waker API II: waking across threads &#8211; https:\/\/boats.gitlab.io\/blog\/post\/wakers-ii\/<\/p>\n<p>LocalWaker \u304c\u3044\u3089\u306a\u3044\u7406\u7531<\/p>\n<p>2019-01-16 &#8211; futures-preview 0.3.0-alpha.12 &#8211; https:\/\/crates.io\/crates\/futures-preview\/0.3.0-alpha.12<\/p>\n<p>2019-01-18 &#8211; Move to Rustasync organization ? &#8211; https:\/\/github.com\/withoutboats\/juliex\/issues\/21<\/p>\n<p>2019-01-18 &#8211; Move to Rustasync organization ? &#8211; https:\/\/github.com\/withoutboats\/romio\/issues\/94<\/p>\n<p>2019-01-25 &#8211; aws-lambda-rust-runtime v0.2.0 &#8211; https:\/\/github.com\/awslabs\/aws-lambda-rust-runtime\/releases\/tag\/v0.2.0<\/p>\n<p>2019-01-28 &#8211; tracing-core 0.1.0 &#8211; https:\/\/github.com\/tokio-rs\/tracing\/releases\/tag\/tracing-core-0.1.0<\/p>\n<p>2019-01-31 &#8211; Tracking issue: timer bindings #62 &#8211; https:\/\/github.com\/withoutboats\/romio\/issues\/62<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u306e\u8a18\u4e8b\u306f 2018 \u5e74\u306e\u975e\u540c\u671f Rust \u306e\u52d5\u5411\u8abf\u67fb \u306e\u7d9a\u5831\u3067\u3059\u3002 TL;DR Rust 1.39.0 \u4ee5\u964d [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-45110","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>- Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/45110-2\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:description\" content=\"\u3053\u306e\u8a18\u4e8b\u306f 2018 \u5e74\u306e\u975e\u540c\u671f Rust \u306e\u52d5\u5411\u8abf\u67fb \u306e\u7d9a\u5831\u3067\u3059\u3002 TL;DR Rust 1.39.0 \u4ee5\u964d [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/45110-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-22T05:48:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-28T23:42:50+00:00\" \/>\n<meta name=\"author\" content=\"\u97f5, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u97f5, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"31 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/45110-2\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/45110-2\/\",\"name\":\"- Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-01-22T05:48:26+00:00\",\"dateModified\":\"2024-04-28T23:42:50+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/45110-2\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e\",\"name\":\"\u97f5, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g\",\"caption\":\"\u97f5, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/45110-2\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"- Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/45110-2\/","og_locale":"zh_CN","og_type":"article","og_description":"\u3053\u306e\u8a18\u4e8b\u306f 2018 \u5e74\u306e\u975e\u540c\u671f Rust \u306e\u52d5\u5411\u8abf\u67fb \u306e\u7d9a\u5831\u3067\u3059\u3002 TL;DR Rust 1.39.0 \u4ee5\u964d [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/45110-2\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-01-22T05:48:26+00:00","article_modified_time":"2024-04-28T23:42:50+00:00","author":"\u97f5, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u97f5, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"31 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/45110-2\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/45110-2\/","name":"- Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-01-22T05:48:26+00:00","dateModified":"2024-04-28T23:42:50+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/45110-2\/"]}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e","name":"\u97f5, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g","caption":"\u97f5, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/45110-2\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=45110"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45110\/revisions"}],"predecessor-version":[{"id":83948,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45110\/revisions\/83948"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=45110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=45110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=45110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}