их все? При этом нужно ограничить количество одновременно запущенных задач сверху
более конкретно -- есть вектор имён файлов и есть async метод по загрузке этих файлов. Нужно выполнить методы на тредпуле, при этом одновременно выполняться должно не больше чем N загрузок
Можно еще вот так попробовать, чтоб не более чем N фьюч поллилось: https://docs.rs/futures/latest/futures/stream/trait.StreamExt.html#method.buffer_unordered
Так лимита ж нет на только лишь FuturesUnordered. Можно их скрестить и радоваться
Асинк семафор берется и все
Если кому-то интересно, вот что получилось Использовал futures::Stream.buffer_unordered -> futures::BufferUnordered. Это позволяет получить квази-итератор футур. Футуры приезжают в порядке выполнения, так что в цикле можно пробежать по ним и обработать результаты. (это скачивалка книг из KyBook 3) https://github.com/ninedraft/ky-sync/blob/master/src/main.rs
кстати, буду благодарен, если накидаете в панамку за качество/идеоматиченость кода
Обсуждают сегодня