pub trait AreaGeoProvider {
// Required methods
fn clear(&mut self) -> AreaResult<()>;
fn save(&mut self, max_distance: u64, version: &str) -> AreaResult<()>;
fn get_max_distance(&self) -> AreaResult<u64>;
fn push_data(
&mut self,
code: &str,
center_geo: Point,
exterior: LineString,
interiors: Vec<LineString>
) -> AreaResult<()>;
fn get_center_data(&self) -> AreaResult<Vec<(usize, String, Point)>>;
fn get_polygon_data(&self, i: &usize) -> Option<AreaGeoIndexInfo>;
fn version(&self) -> String;
fn init(&mut self) -> AreaResult<()>;
}