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<_> и с этим работают. Я решил что пускай все они стримы возвращают..
Обсуждают сегодня