вокруг вот этого?
https://github.com/search?q=%22.collect%3A%3A%3CResult%3CVec%3C_%3E%2C+_%3E%3E%28%29%22&type=code
Нет. Иногда делают collect::<Option<T>>. Твой try_collect так не сможет без привязки к какому-нибудь Try трейту, а это анстейбл и куча ненужной работы.
Если ограничиться только Result<Vec<_>, _>, то почему бы и нет. trait TryCollectVec: Sized + Iterator { fn try_collect<V, E>(self) -> Result<Vec<V>, E> where Result<Vec<V>, E>: FromIterator<Self::Item> { self.collect() } } impl<I: Iterator> TryCollectVec for I {}
А если нужно собирать не в вектор?
Сделать две функции, одну для векторов, вторую обобщённую. try_collect_vec() и try_collect() -> Result<Container, E>
Обсуждают сегодня