rm stale DomainError, add error docs

Astro created

Change summary

src/error.rs | 46 ++++++++++++++++++++++------------------------
src/lib.rs   |  2 +-
2 files changed, 23 insertions(+), 25 deletions(-)

Detailed changes

src/error.rs 🔗

@@ -10,15 +10,21 @@ use trust_dns_proto::error::ProtoError;
 use xmpp_parsers::error::Error as ParsersError;
 use xmpp_parsers::sasl::DefinedCondition as SaslDefinedCondition;
 
+/// Top-level error type
 #[derive(Debug, Error)]
 pub enum Error {
+    /// I/O error
     Io(IoError),
+    /// Error resolving DNS and establishing a connection
     Connection(ConnecterError),
     /// DNS label conversion error, no details available from module
     /// `idna`
     Idna,
+    /// Protocol-level error
     Protocol(ProtocolError),
+    /// Authentication error
     Auth(AuthError),
+    /// TLS error
     Tls(TlsError),
     /// Shoud never happen
     InvalidState,
@@ -62,57 +68,49 @@ impl fmt::Display for ParseError {
     }
 }
 
+/// XMPP protocol-level error
 #[derive(Debug, Error)]
 pub enum ProtocolError {
+    /// XML parser error
     Parser(ParserError),
+    /// Error with expected stanza schema
     #[error(non_std)]
     Parsers(ParsersError),
+    /// No TLS available
     NoTls,
+    /// Invalid response to resource binding
     InvalidBindResponse,
+    /// No xmlns attribute in <stream:stream>
     NoStreamNamespace,
+    /// No id attribute in <stream:stream>
     NoStreamId,
+    /// Encountered an unexpected XML token
     InvalidToken,
 }
 
+/// Authentication error
 #[derive(Debug, Error)]
 pub enum AuthError {
-    /// No SASL mechanism available
+    /// No matching SASL mechanism available
     NoMechanism,
+    /// Local SASL implementation error
     #[error(no_from, non_std, msg_embedded)]
     Sasl(String),
+    /// Failure from server
     #[error(non_std)]
     Fail(SaslDefinedCondition),
+    /// Component authentication failure
     #[error(no_from)]
     ComponentFail,
 }
 
+/// Error establishing connection
 #[derive(Debug, Error)]
 pub enum ConnecterError {
-    NoSrv,
+    /// All attempts failed, no error available
     AllFailed,
-    /// DNS name error
-    Domain(DomainError),
-    /// DNS resolution error
+    /// DNS protocol error
     Dns(ProtoError),
     /// DNS resolution error
     Resolve(ResolveError),
 }
-
-/// DNS name error wrapper type
-#[derive(Debug)]
-pub struct DomainError(pub String);
-
-impl StdError for DomainError {
-    fn description(&self) -> &str {
-        &self.0
-    }
-    fn cause(&self) -> Option<&StdError> {
-        None
-    }
-}
-
-impl fmt::Display for DomainError {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        write!(f, "{}", self.0)
-    }
-}

src/lib.rs 🔗

@@ -1,4 +1,4 @@
-// #![deny(unsafe_code, unused, missing_docs)]
+#![deny(unsafe_code, unused, missing_docs)]
 
 //! XMPP implemeentation with asynchronous I/O using Tokio.