1#![warn(missing_docs)]
4
5use peg::{error::ParseError, str::LineCol};
9use std::{
10 array::TryFromSliceError,
11 borrow::Cow,
12 num::{ParseIntError, TryFromIntError},
13};
14use thiserror::Error;
15
16#[derive(Debug, Error)]
18pub enum MyError {
19 #[error("I/O error: {0}")]
21 IO(#[from] std::io::Error),
22
23 #[error("Date-Time error: {0}")]
25 Time(#[from] jiff::Error),
26
27 #[error("PEG error: {0:?}")]
29 Text(ParseError<LineCol>),
30
31 #[error("Json [Try]From error: {0}")]
33 Json(#[from] serde_json::Error),
34
35 #[error("Geos error: {0}")]
37 Geos(#[from] geos::Error),
38
39 #[error("Converting {0} to `f64` will result in loss of precision")]
41 PrecisionLoss(Cow<'static, str>),
42
43 #[error("CRS creation error: {0}")]
45 CRS(#[from] proj::ProjCreateError),
46
47 #[error("Proj error: {0}")]
49 Proj(#[from] proj::ProjError),
50
51 #[error("Runtime error: {0}")]
53 Runtime(Cow<'static, str>),
54
55 #[error("CSV error: {0}")]
57 CSV(#[from] csv::Error),
58
59 #[error("SQLx error: {0}")]
61 SQL(#[from] sqlx::Error),
62
63 #[error("Conversion (bytes -> int) error: {0}")]
65 Conv(#[from] TryFromIntError),
66
67 #[error("Conversion (str -> int) error: {0}")]
69 Conv2(#[from] ParseIntError),
70
71 #[error("Conversion (slice) error: {0}")]
73 Slice(#[from] TryFromSliceError),
74}