tokio::select!
был основан на опыте с futures::select!
, но немного улучшил его, чтобы сделать его более эргономичным c. Например, futures-rs
версия select!
требует Future
s для реализации FusedFuture
, тогда как версия tok ios больше не требует этого.
Вместо этого версия tok ios поддерживает предварительные условия в макрос для того, чтобы охватить те же сценарии использования.
CR в репозитории Tokio говорит об этом немного подробнее.
Это изменение также предлагается для futures-rs версии , но до сих пор там не реализован.
Если у вас уже есть tokio в вашем проекте, тогда использование версии tok ios представляется предпочтительным. Если вы, однако, не имеете и не хотите брать дополнительную зависимость, то версия futures-rs также будет охватывать большинство вариантов использования почти идентичным образом. Может потребоваться преобразование только некоторых Future
в FusedFuture
с помощью метода расширения FutureExt::fuse()
.