して使えるようになる模様です。統一されていくんだろうなと思います。安定するまで対応を見送っているかまちまちだったりします。非同期処理の標準的な仕組みををつかうためには、以下2つのものが必要です。いろいろなライブラリを組み合わせる場合、これらの互換性を気にしないといけないことになります。いうtraitの値で表現する。Wakerを渡せるようになっていたり。表現するように変わった。相互に変換して、共存させるための仕組みが提供されているので、Future自体は別々のバージョンを混ぜてつかうのは難しくないとおもいます。Futures-rsこちらも参考になります。Qiitaランタイム非同期な処理ということは、起動したスレッドをブロックしない代わりに、どこか別のスレッドで処理が走る、ということなので、イベントループ用スレッドなりスレッドプールなりが別口に必要です。ここの実装をランタイムと呼んでいます。非同期ランタイムをとくに意識せずに、暗黙のうちにその環境でどのように非同期処理が実行されるか選択されます。言語処理系と非同期はほぼきっても切れない関係なのです。ところがrustの場合、非同期処理に入るコードを書く人がが明示的に指定して起動することになってます。依存しない、標準的なAPIの提案的な立ち位置のようすのランタイム実装。スレッドをブロックする処理のための機能が入っていたりする。0.1系を使ったランタイム。それに依存していたりすると、runtimeとは併用できない、ということが起こったりします。crateのランタイムでそれを走らせると実行時にコケてしまいます。特定の実装に依存せずにフレキシブル取り替えられるようにライブラリ側に対応してもらう必要があるとおもいます。非同期に使う迄に色々と苦労してしまったので、以下、備考録です。2コくらいみかけました。コネクションプールが入っていたりと、なかなか使いやすそうです。なってしまった場合、再接続するとかのケアはおそらくとくに入ってなさなさそうなので、考える必要がありそう。0.3系のランタイムに依存している場合だと現状だと使えないと思います。ネームスペース以下に非同期のAPIも入っています。2種類あるので注意です。redis::Connection非同期じゃないコネクション。redis::aio::Connectionランタイム内で非同期にコネクションを確立。制御されていて、複数のスレッドから同じものを参照してつかうことができる。使うことになるとおもいます。使うなどの処理が必要になるはず。コネクションを非同期に確立するランタイムと、コネクションをつかうランタイムは同じにしないと実行時エラーになるので注意です。0.1系のランタイム上で走らせていないと実行時エラーになるようです。SharedConnectionoを使用するのは現状だとできないということになりそうです。外側から注入できるようにすれば良いのかな、と思いますが、その辺の対応はまだ入ってません。追記:PRを投げてみたところマージされました。ランタイムは、スレッドプールを2種類もっています。core_threads通常のスレッドプール。デフォルトのスレッド数=コア数。このblocking用スレッド上で同期的に流してあげれば、外側からは非同期処理として扱うことができます。非同期I/Oほどのスループットはでないとおもうけど、blockingスレッド数までは並列に実行できることが期待できます。blockingスレッドで実行していたりします。blockingスレッド上で実行することができます。CPUを占有する処理を書く。rx.await?;僕がつくっていたサーバは、同時接続数が大量に必要なわけではなかったので、とりあえずこのやりかたを採用してみました。