1use spatialrust_core::{PointCloud, PointSchema, SpatialMetadata, SpatialResult};
2
3use crate::{ReadOptions, WriteOptions};
4
5pub trait PointReader {
7 fn schema(&self) -> SpatialResult<PointSchema>;
9
10 fn metadata(&self) -> SpatialResult<SpatialMetadata>;
12
13 fn read(&mut self, options: &ReadOptions) -> SpatialResult<PointCloud>;
15}
16
17pub trait PointWriter {
19 fn write(&mut self, cloud: &PointCloud, options: &WriteOptions) -> SpatialResult<()>;
21}
22
23pub trait PointStream {
25 fn next_chunk(&mut self, options: &ReadOptions) -> SpatialResult<bool>;
27}
28
29pub trait PointSink {
31 fn write_chunk(&mut self, cloud: &PointCloud, options: &WriteOptions) -> SpatialResult<()>;
33}