Skip to main content

egml_core/model/common/
iter_geometries.rs

1use crate::model::geometry::refs::AbstractGeometryKindRef;
2
3/// Iterates over all geometries nested within a geometry, recursively,
4/// borrowed through [`AbstractGeometryKindRef`].
5///
6/// Each container yields every nested geometry — its direct members followed by
7/// those members' own nested geometries, depth-first — as a single flattened
8/// stream.
9///
10/// Leaf geometries (e.g. [`LinearRing`](crate::model::geometry::primitives::LinearRing))
11/// yield an empty iterator. Container geometries
12/// (e.g. [`Polygon`](crate::model::geometry::primitives::Polygon)) yield their
13/// resolved members and each member's descendants, skipping any property that
14/// only carries an unresolved `xlink:href`.
15pub trait IterGeometries {
16    fn iter_geometries(&self) -> Box<dyn Iterator<Item = AbstractGeometryKindRef<'_>> + '_>;
17}