"обрезаный вариант", который, допустим, я могу сфолдить в вектор, а как быть со следующей секундой? мне же всё-таки нужен стрим в итоге.
Сорри если вопросы глупые, я в доке заблудился :)
Тут нужно что-то вроде let string_stream = ...; let timer_stream = ...; let window_stream = stream::unfold((), |_| async move { let mut items = vec![]; loop{ select! { _ = timer_stream.next() => { if items.is_empty() { continue }; return Some((items, ())); } item = string_stream.next() => { items.push(item); } }; }; });
не получается только запихать стримы внутрь анфолда
положи их в init
чот у меня руки видимо не оттуда растут :( https://gist.github.com/rust-play/6a7dc0913b97edd6fa4e04a824bef3a7 теперь пишет expected tuple, found '()'
тебе же надо на каждой «итерации» возвращать значение + новое состояние, а ты возвращаешь значение + пустой кортеж
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=e9bd015eb2cd145d3597e61d1a52fd4b
timer_stream должен быть бесконечным. Если нужно обрабатывать и конечный, надо добавить проверку возвращаемого значения у timer.next()
оо, спасибо огромное! теперь понятно где я тупил. Правда я сломался на понимании почему теперь его надо пинить :(
Обсуждают сегодня