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