@@ -6,35 +6,59 @@ use std::fmt::{Debug, Display};
6
6
pub struct SpecErrorWrapper < E > ( pub E ) ;
7
7
8
8
pub trait SpecError < E > : Sized {
9
- fn __sqlx_spec_error ( & self ) -> fn ( SpecErrorWrapper < E > ) -> Box < dyn Error + Send + Sync + ' static > ;
9
+ fn __sqlx_spec_error (
10
+ & self ,
11
+ ) -> fn ( SpecErrorWrapper < E > ) -> Box < dyn Error + Send + Sync + ' static > ;
10
12
}
11
13
12
- impl < E > SpecError < E > for & & & & SpecErrorWrapper < E > where E : Error + Send + Sync + ' static {
13
- fn __sqlx_spec_error ( & self ) -> fn ( SpecErrorWrapper < E > ) -> Box < dyn Error + Send + Sync + ' static > {
14
+ impl < E > SpecError < E > for & & & & SpecErrorWrapper < E >
15
+ where
16
+ E : Error + Send + Sync + ' static ,
17
+ {
18
+ fn __sqlx_spec_error (
19
+ & self ,
20
+ ) -> fn ( SpecErrorWrapper < E > ) -> Box < dyn Error + Send + Sync + ' static > {
14
21
|e| Box :: new ( e. 0 )
15
22
}
16
23
}
17
24
18
- impl < E > SpecError < E > for & & & SpecErrorWrapper < E > where E : Display {
19
- fn __sqlx_spec_error ( & self ) -> fn ( SpecErrorWrapper < E > ) -> Box < dyn Error + Send + Sync + ' static > {
25
+ impl < E > SpecError < E > for & & & SpecErrorWrapper < E >
26
+ where
27
+ E : Display ,
28
+ {
29
+ fn __sqlx_spec_error (
30
+ & self ,
31
+ ) -> fn ( SpecErrorWrapper < E > ) -> Box < dyn Error + Send + Sync + ' static > {
20
32
|e| e. 0 . to_string ( ) . into ( )
21
33
}
22
34
}
23
35
24
- impl < E > SpecError < E > for & & SpecErrorWrapper < E > where E : Debug {
25
- fn __sqlx_spec_error ( & self ) -> fn ( SpecErrorWrapper < E > ) -> Box < dyn Error + Send + Sync + ' static > {
36
+ impl < E > SpecError < E > for & & SpecErrorWrapper < E >
37
+ where
38
+ E : Debug ,
39
+ {
40
+ fn __sqlx_spec_error (
41
+ & self ,
42
+ ) -> fn ( SpecErrorWrapper < E > ) -> Box < dyn Error + Send + Sync + ' static > {
26
43
|e| format ! ( "{:?}" , e. 0 ) . into ( )
27
44
}
28
45
}
29
46
30
- impl < E > SpecError < E > for & SpecErrorWrapper < E > where E : Any {
31
- fn __sqlx_spec_error ( & self ) -> fn ( SpecErrorWrapper < E > ) -> Box < dyn Error + Send + Sync + ' static > {
47
+ impl < E > SpecError < E > for & SpecErrorWrapper < E >
48
+ where
49
+ E : Any ,
50
+ {
51
+ fn __sqlx_spec_error (
52
+ & self ,
53
+ ) -> fn ( SpecErrorWrapper < E > ) -> Box < dyn Error + Send + Sync + ' static > {
32
54
|_e| format ! ( "unprintable error: {}" , std:: any:: type_name:: <E >( ) ) . into ( )
33
55
}
34
56
}
35
57
36
58
impl < E > SpecError < E > for SpecErrorWrapper < E > {
37
- fn __sqlx_spec_error ( & self ) -> fn ( SpecErrorWrapper < E > ) -> Box < dyn Error + Send + Sync + ' static > {
59
+ fn __sqlx_spec_error (
60
+ & self ,
61
+ ) -> fn ( SpecErrorWrapper < E > ) -> Box < dyn Error + Send + Sync + ' static > {
38
62
|_e| "unprintable error: (unprintable type)" . into ( )
39
63
}
40
64
}
@@ -58,7 +82,8 @@ fn test_spec_error() {
58
82
59
83
struct AnyError ;
60
84
61
- let _e: Box < dyn Error + Send + Sync + ' static > = __spec_error ! ( std:: io:: Error :: from( std:: io:: ErrorKind :: Unsupported ) ) ;
85
+ let _e: Box < dyn Error + Send + Sync + ' static > =
86
+ __spec_error ! ( std:: io:: Error :: from( std:: io:: ErrorKind :: Unsupported ) ) ;
62
87
63
88
let _e: Box < dyn Error + Send + Sync + ' static > = __spec_error ! ( "displayable error" ) ;
64
89
@@ -67,4 +92,4 @@ fn test_spec_error() {
67
92
let _e: Box < dyn Error + Send + Sync + ' static > = __spec_error ! ( AnyError ) ;
68
93
69
94
let _e: Box < dyn Error + Send + Sync + ' static > = __spec_error ! ( & 1i32 ) ;
70
- }
95
+ }
0 commit comments