ntex_net/connect/
error.rs

1use std::io;
2
3#[derive(thiserror::Error, Debug)]
4pub enum ConnectError {
5    /// Failed to resolve the hostname
6    #[error("Failed resolving hostname: {0}")]
7    Resolver(io::Error),
8
9    /// No dns records
10    #[error("No dns records found for the input")]
11    NoRecords,
12
13    /// Invalid input
14    #[error("Invalid input")]
15    InvalidInput,
16
17    /// Unresolved host name
18    #[error("Connector received `Connect` method with unresolved host")]
19    Unresolved,
20
21    /// Connection io error
22    #[error("{0}")]
23    Io(#[from] io::Error),
24}
25
26impl Clone for ConnectError {
27    fn clone(&self) -> Self {
28        match self {
29            ConnectError::Resolver(err) => {
30                ConnectError::Resolver(io::Error::new(err.kind(), format!("{err}")))
31            }
32            ConnectError::NoRecords => ConnectError::NoRecords,
33            ConnectError::InvalidInput => ConnectError::InvalidInput,
34            ConnectError::Unresolved => ConnectError::Unresolved,
35            ConnectError::Io(err) => {
36                ConnectError::Io(io::Error::new(err.kind(), format!("{err}")))
37            }
38        }
39    }
40}
41
42#[cfg(test)]
43mod tests {
44    use super::*;
45
46    #[test]
47    #[allow(clippy::redundant_clone)]
48    fn connect_error_clone() {
49        let _ = ConnectError::Resolver(io::Error::other("test")).clone();
50        let _ = ConnectError::NoRecords.clone();
51        let _ = ConnectError::InvalidInput.clone();
52        let _ = ConnectError::Unresolved.clone();
53        let _ = ConnectError::Io(io::Error::other("test")).clone();
54    }
55}