В чем разница между фьючерсами :: выберите! а токио :: выбрать? - PullRequest
1 голос
/ 23 марта 2020

Я использую Tokio и хочу получать запросы из двух разных mpsc очередей. select! похоже на путь к go, но я не уверен, в чем разница между futures::select! и tokio::select!. При каких обстоятельствах вы должны использовать один поверх другого?

1 Ответ

1 голос
/ 29 марта 2020

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().

...