pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("Failed to initialize libpostal: {message}")]
InitializationFailed {
message: String,
},
#[error("Data error: {message}")]
DataError {
message: String,
},
#[error("Parse error: {message}")]
ParseError {
message: String,
},
#[error("Normalization error: {message}")]
NormalizationError {
message: String,
},
#[error("FFI error: {message}")]
FfiError {
message: String,
},
#[error("I/O error: {source}")]
IoError {
#[from]
source: std::io::Error,
},
#[cfg(feature = "runtime-data")]
#[error("Network error: {message}")]
NetworkError {
message: String,
},
}
impl Error {
pub fn initialization_failed(message: impl Into<String>) -> Self {
Self::InitializationFailed {
message: message.into(),
}
}
pub fn data_error(message: impl Into<String>) -> Self {
Self::DataError {
message: message.into(),
}
}
pub fn parse_error(message: impl Into<String>) -> Self {
Self::ParseError {
message: message.into(),
}
}
pub fn normalization_error(message: impl Into<String>) -> Self {
Self::NormalizationError {
message: message.into(),
}
}
pub fn ffi_error(message: impl Into<String>) -> Self {
Self::FfiError {
message: message.into(),
}
}
#[cfg(feature = "runtime-data")]
pub fn network_error(message: impl Into<String>) -> Self {
Self::NetworkError {
message: message.into(),
}
}
}