geoarrow_array/geozero/export/scalar/
rect.rs

1use geo_traits::RectTrait;
2use geozero::{GeomProcessor, GeozeroGeometry};
3
4use crate::builder::geo_trait_wrappers::RectWrapper;
5use crate::geozero::export::scalar::process_polygon;
6use crate::scalar::Rect;
7
8pub(crate) fn process_rect<P: GeomProcessor>(
9    geom: &impl RectTrait<T = f64>,
10    geom_idx: usize,
11    processor: &mut P,
12) -> geozero::error::Result<()> {
13    let polygon = RectWrapper::try_new(geom)
14        .map_err(|err| geozero::error::GeozeroError::Geometry(err.to_string()))?;
15    process_polygon(&polygon, true, geom_idx, processor)
16}
17
18impl GeozeroGeometry for Rect<'_> {
19    fn process_geom<P: GeomProcessor>(&self, processor: &mut P) -> geozero::error::Result<()>
20    where
21        Self: Sized,
22    {
23        process_rect(self, 0, processor)
24    }
25}