(
self,
mut f: F,
)
| 1199 | } |
| 1200 | |
| 1201 | fn map_until_stop_and_collect< |
| 1202 | F: FnMut(Self::Item) -> Result<Transformed<Self::Item>>, |
| 1203 | >( |
| 1204 | self, |
| 1205 | mut f: F, |
| 1206 | ) -> Result<Transformed<Vec<Self::Item>>> { |
| 1207 | let mut tnr = TreeNodeRecursion::Continue; |
| 1208 | let mut transformed = false; |
| 1209 | self.map(|item| match tnr { |
| 1210 | TreeNodeRecursion::Continue | TreeNodeRecursion::Jump => { |
| 1211 | f(item).map(|result| { |
| 1212 | tnr = result.tnr; |
| 1213 | transformed |= result.transformed; |
| 1214 | result.data |
| 1215 | }) |
| 1216 | } |
| 1217 | TreeNodeRecursion::Stop => Ok(item), |
| 1218 | }) |
| 1219 | .collect::<Result<Vec<_>>>() |
| 1220 | .map(|data| Transformed::new(data, transformed, tnr)) |
| 1221 | } |
| 1222 | } |
| 1223 | |
| 1224 | /// Transformation helper to access [`Transformed`] fields in a [`Result`] easily. |
no test coverage detected