use thiserror::Error;
pub type DiscoveryResult<T> = Result<T, DiscoveryError>;
#[derive(Debug, Error, Clone, PartialEq, Eq)]
pub enum DiscoveryError {
#[error("service `{service}` has no available instances")]
NoInstances { service: String },
#[error("service `{service}` already has instance `{id}`")]
DuplicateInstance { service: String, id: String },
#[error("service `{service}` does not have instance `{id}`")]
MissingInstance { service: String, id: String },
#[error("failed to resolve `{host}`: {message}")]
Resolve { host: String, message: String },
#[error("invalid endpoint `{endpoint}`")]
InvalidEndpoint { endpoint: String },
}