1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
use std::{self, fmt}; #[derive(Debug, Ord, PartialOrd, Eq, PartialEq, Clone)] pub enum Error { InvalidGeometry(String), ImpossibleOperation(String), GeosError(String), GeosFunctionError(PredicateType, i32), NoConstructionFromNullPtr(String), ConversionError(String), GenericError(String), } impl fmt::Display for Error { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self { Error::InvalidGeometry(ref s) => write!(f, "Invalid geometry, {}", s), Error::ImpossibleOperation(ref s) => write!(f, "Impossible operation, {}", s), Error::GeosError(ref s) => write!(f, "error while calling libgeos while {}", s), Error::GeosFunctionError(p, e) => write!( f, "error while calling libgeos method {} (error number = {})", p, e ), Error::NoConstructionFromNullPtr(ref s) => { write!(f, "impossible to build a geometry from a nullptr in \"{}\"", s) } Error::ConversionError(ref s) => write!(f, "impossible to convert geometry, {}", s), Error::GenericError(ref s) => write!(f, "generic error: {}", s), } } } pub type GResult<T> = std::result::Result<T, Error>; #[derive(Copy, Clone, Debug, Ord, PartialOrd, Eq, PartialEq)] pub enum PredicateType { Intersects, Crosses, Disjoint, Touches, Overlaps, Within, Equals, EqualsExact, Covers, CoveredBy, Contains, IsRing, IsEmpty, IsSimple, PreparedContains, PreparedContainsProperly, PreparedCoveredBy, PreparedCovers, PreparedCrosses, PreparedDisjoint, PreparedIntersects, PreparedOverlaps, PreparedTouches, PreparedWithin, Normalize, } impl std::fmt::Display for PredicateType { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "{}", format!("{:?}", self)) } }