use miette::Diagnostic;
use thiserror::Error;
#[derive(Debug, Diagnostic, Error)]
#[diagnostic(url(docsrs))]
pub enum Error {
#[error(transparent)]
#[diagnostic(code(google_maps::types))]
Type(#[from] crate::types::Error),
#[cfg(any(feature = "directions", feature = "distance_matrix"))]
#[error(transparent)]
#[diagnostic(code(google_maps::directions))]
Directions(#[from] crate::directions::error::Error),
#[cfg(feature = "distance_matrix")]
#[error(transparent)]
#[diagnostic(code(google_maps::distance_matrix))]
DistanceMatrix(#[from] crate::distance_matrix::error::Error),
#[cfg(feature = "elevation")]
#[error(transparent)]
#[diagnostic(code(google_maps::elevation))]
Elevation(#[from] crate::elevation::error::Error),
#[cfg(feature = "geocoding")]
#[error(transparent)]
#[diagnostic(code(google_maps::geocoding))]
Geocoding(#[from] crate::geocoding::error::Error),
#[cfg(feature = "places")]
#[error(transparent)]
#[diagnostic(code(google_maps::places))]
Places(#[from] crate::places::error::Error),
#[cfg(feature = "autocomplete")]
#[error(transparent)]
#[diagnostic(code(google_maps::place_autocomplete))]
PlaceAutocomplete(#[from] crate::places::place_autocomplete::error::Error),
#[cfg(feature = "roads")]
#[error(transparent)]
#[diagnostic(code(google_maps::roads))]
Roads(#[from] crate::roads::error::Error),
#[cfg(feature = "time_zone")]
#[error(transparent)]
#[diagnostic(code(google_maps::time_zone))]
TimeZone(#[from] crate::time_zone::error::Error),
#[cfg(feature = "enable-reqwest")]
#[error(transparent)]
#[diagnostic(code(google_maps::reqwest))]
Reqwest(#[from] reqwest::Error),
}