Skip to main content

rs_zero/discovery/
error.rs

1use thiserror::Error;
2
3/// Result type used by service discovery operations.
4pub type DiscoveryResult<T> = Result<T, DiscoveryError>;
5
6/// Errors returned by discovery adapters and selectors.
7#[derive(Debug, Error, Clone, PartialEq, Eq)]
8pub enum DiscoveryError {
9    /// A service has no available instances.
10    #[error("service `{service}` has no available instances")]
11    NoInstances { service: String },
12
13    /// An instance cannot be registered because the id already exists.
14    #[error("service `{service}` already has instance `{id}`")]
15    DuplicateInstance { service: String, id: String },
16
17    /// The requested instance does not exist.
18    #[error("service `{service}` does not have instance `{id}`")]
19    MissingInstance { service: String, id: String },
20
21    /// A DNS lookup failed.
22    #[error("failed to resolve `{host}`: {message}")]
23    Resolve { host: String, message: String },
24
25    /// The provided endpoint is invalid.
26    #[error("invalid endpoint `{endpoint}`")]
27    InvalidEndpoint { endpoint: String },
28}