ошибку, которая не ошибка вовсе, а сигнал остановить стрим. При этом другие ошибки вполне ошибки и их надо залогировать (ну и остановить стрим тоже). Все ошибки привожу к одной anyhow::Error (там цепочка футур из разных библиотек, по-другому не придумал как)
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=ca6d1fbcbfc2471775638c271847db03
как ты 11 собрался получить из Err, Ok(0), Ok(3)?
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=c2f2fa358df350125c1a478f24a6fa93
опечатался, another_future возвращает Ok(x+10) . На самом деле 0 значения не имеет, просто выбрал для примера, что б показать что футура может Err вернуть, но именно Err этой одной футуры должен сигнализировать ранний конец стрима.
если в изначальном стриме будут Err, они не съедятся этим is_ok()?
советую заглянуть внутрь https://github.com/kpp/futures-async-combinators , там +- похожий апи и аналогичное с futures поведение, зато читается проще
Спасибо, подсмотрю
спасибо. поправил чуток под опечатку в примере, я это завтра уже понять не смогу :) жуть какая. буду делать обычный adn_then и из Err(e) выковыривать ошибку через anyhow downcast
так зачем, если можно всё нормально сделать через Option?
Да где ж нормально? https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=f0a546aac460ef5ce998dbda4507688f
что это за код? я же скинул рабочий пример с Option
здесь нет Option'ов ещё раз продублирую мой пример: https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=c2f2fa358df350125c1a478f24a6fa93
Зачем вводить дополнительный Option?
чтобы не заниматься даункастами
Обсуждают сегодня