let mut submissions = stream_map_submissions(posts);
while let Some(after) = maybe_after {
posts = cfg.subreddit
.hot(100, Some(FeedOption::new().after(&after)))
.await?;
maybe_after = posts.data.after.clone();
submissions = submissions.chain(stream_map_submissions(posts))
}
Типа этого, но так нельзя, type mismatch
Ну можно попробовать забоксить submissions
let submissions: Box<dyn Stream<Item=X>> ?
Pin<Box<dyn Stream + Send>> и всё такое
Блин, страшно..
Ну примерно, да. Можешь алиас из futures использовать https://docs.rs/futures/0.3.16/futures/stream/type.BoxStream.html let submissions: BoxStream<_> = Box::pin(...);
Оо, так выглядит менее страшно.. Какие минусы такого подхода?
Ну боксинг происходит. Но ты рекурсию без боксинга anyway не сделаешь, так что :shrug:
В общем ладно, сильно медленнее стать не должно. У меня было что несколько функций возвращают футуру от Vec<_> и с этим работают. Я решил что пускай все они стримы возвращают..
Обсуждают сегодня