@@ -4,20 +4,23 @@ use scylla::transport::errors::*;
4
4
pub ( crate ) use crate :: cass_error_types:: { CassError , CassErrorSource } ;
5
5
use crate :: query_error:: CassErrorResult ;
6
6
7
- // TODO: From<ref> is bad practice. Will be replaced in the next commit.
8
- impl From < & CassErrorResult > for CassError {
9
- fn from ( error : & CassErrorResult ) -> Self {
10
- match error {
11
- CassErrorResult :: Query ( query_error) => CassError :: from ( query_error) ,
7
+ pub trait ToCassError {
8
+ fn to_cass_error ( & self ) -> CassError ;
9
+ }
10
+
11
+ impl ToCassError for CassErrorResult {
12
+ fn to_cass_error ( & self ) -> CassError {
13
+ match self {
14
+ CassErrorResult :: Query ( query_error) => query_error. to_cass_error ( ) ,
12
15
}
13
16
}
14
17
}
15
18
16
- impl From < & QueryError > for CassError {
17
- fn from ( error : & QueryError ) -> Self {
18
- match error {
19
- QueryError :: DbError ( db_error, _string) => CassError :: from ( db_error) ,
20
- QueryError :: BadQuery ( bad_query) => CassError :: from ( bad_query) ,
19
+ impl ToCassError for QueryError {
20
+ fn to_cass_error ( & self ) -> CassError {
21
+ match self {
22
+ QueryError :: DbError ( db_error, _string) => db_error. to_cass_error ( ) ,
23
+ QueryError :: BadQuery ( bad_query) => bad_query. to_cass_error ( ) ,
21
24
QueryError :: ProtocolError ( _str) => CassError :: CASS_ERROR_SERVER_PROTOCOL_ERROR ,
22
25
QueryError :: TimeoutError => CassError :: CASS_ERROR_LIB_REQUEST_TIMED_OUT , // This may be either read or write timeout error
23
26
QueryError :: UnableToAllocStreamId => CassError :: CASS_ERROR_LIB_NO_STREAMS ,
@@ -42,9 +45,9 @@ impl From<&QueryError> for CassError {
42
45
}
43
46
}
44
47
45
- impl From < & DbError > for CassError {
46
- fn from ( error : & DbError ) -> Self {
47
- match error {
48
+ impl ToCassError for DbError {
49
+ fn to_cass_error ( & self ) -> CassError {
50
+ match self {
48
51
DbError :: ServerError => CassError :: CASS_ERROR_SERVER_SERVER_ERROR ,
49
52
DbError :: ProtocolError => CassError :: CASS_ERROR_SERVER_PROTOCOL_ERROR ,
50
53
DbError :: AuthenticationError => CassError :: CASS_ERROR_SERVER_BAD_CREDENTIALS ,
@@ -72,9 +75,9 @@ impl From<&DbError> for CassError {
72
75
}
73
76
}
74
77
75
- impl From < & BadQuery > for CassError {
76
- fn from ( error : & BadQuery ) -> Self {
77
- match error {
78
+ impl ToCassError for BadQuery {
79
+ fn to_cass_error ( & self ) -> CassError {
80
+ match self {
78
81
BadQuery :: SerializeValuesError ( _serialize_values_error) => {
79
82
CassError :: CASS_ERROR_LAST_ENTRY
80
83
}
@@ -91,9 +94,9 @@ impl From<&BadQuery> for CassError {
91
94
}
92
95
}
93
96
94
- impl From < & NewSessionError > for CassError {
95
- fn from ( error : & NewSessionError ) -> Self {
96
- match error {
97
+ impl ToCassError for NewSessionError {
98
+ fn to_cass_error ( & self ) -> CassError {
99
+ match self {
97
100
NewSessionError :: FailedToResolveAnyHostname ( _hostnames) => {
98
101
CassError :: CASS_ERROR_LIB_NO_HOSTS_AVAILABLE
99
102
}
@@ -127,9 +130,9 @@ impl From<&NewSessionError> for CassError {
127
130
}
128
131
}
129
132
130
- impl From < & BadKeyspaceName > for CassError {
131
- fn from ( error : & BadKeyspaceName ) -> Self {
132
- match error {
133
+ impl ToCassError for BadKeyspaceName {
134
+ fn to_cass_error ( & self ) -> CassError {
135
+ match self {
133
136
BadKeyspaceName :: Empty => CassError :: CASS_ERROR_LAST_ENTRY ,
134
137
BadKeyspaceName :: TooLong ( _string, _usize) => CassError :: CASS_ERROR_LAST_ENTRY ,
135
138
BadKeyspaceName :: IllegalCharacter ( _string, _char) => CassError :: CASS_ERROR_LAST_ENTRY ,
0 commit comments