1use std::error::Error as StdError;
2use std::fmt::{self, Debug, Display, Formatter};
3
4use crate::error::DatabaseError;
5use crate::mssql::protocol::error::Error;
6
7pub struct MssqlDatabaseError(pub(crate) Error);
9
10impl Debug for MssqlDatabaseError {
11 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
12 f.debug_struct("MssqlDatabaseError")
13 .field("message", &self.0.message)
14 .field("number", &self.0.number)
15 .field("state", &self.0.state)
16 .field("class", &self.0.class)
17 .field("server", &self.0.server)
18 .field("procedure", &self.0.procedure)
19 .field("line", &self.0.line)
20 .finish()
21 }
22}
23
24impl Display for MssqlDatabaseError {
25 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
26 f.pad(self.message())
27 }
28}
29
30impl StdError for MssqlDatabaseError {}
31
32impl DatabaseError for MssqlDatabaseError {
33 #[inline]
34 fn message(&self) -> &str {
35 &self.0.message
36 }
37
38 #[doc(hidden)]
39 fn as_error(&self) -> &(dyn StdError + Send + Sync + 'static) {
40 self
41 }
42
43 #[doc(hidden)]
44 fn as_error_mut(&mut self) -> &mut (dyn StdError + Send + Sync + 'static) {
45 self
46 }
47
48 #[doc(hidden)]
49 fn into_error(self: Box<Self>) -> Box<dyn StdError + Send + Sync + 'static> {
50 self
51 }
52}